Browse Source

почти стрела

master
parent
commit
c173f0f6ae
5 changed files with 88 additions and 42 deletions
  1. +3
    -20
      320.игрок.js
  2. +54
    -0
      360.маскиПрыжков.js
  3. +1
    -0
      700.пуск.js
  4. +29
    -22
      800.пример.json.js
  5. +1
    -0
      index.html

+ 3
- 20
320.игрок.js View File

@@ -37,7 +37,7 @@
}

мир.игрок.переместить();
мир.игрок.задатьМаскуСтолкновения();
//мир.игрок.задатьМаскуСтолкновения();
мир.игрок.отслеживатьПрыжкиПриземления();
};

@@ -77,31 +77,14 @@
// // // //


/*
мир.игрок.задатьМаскуСтолкновения = function()
{
var прыжок = мир.игрок.тело.velocity.y < -1;
var маска = прыжок ? 1 : (1 | 2);
мир.игрок.тело.collisionFilter.mask = маска;

/*
if (тело.velocity.y < мир.игрок.minv)
{
мир.игрок.minv = тело.velocity.y;
}
if (тело.velocity.y > мир.игрок.maxv)
{
мир.игрок.maxv = тело.velocity.y;
}
document.getElementById("отладка").innerHTML = `min: ${мир.игрок.minv} max: ${мир.игрок.maxv}`;

if (Math.abs(мир.игрок.было - тело.velocity.y) > 0.001)
{
мир.игрок.было = тело.velocity.y;
console.debug("vel", мир.игрок.было);
}
*/

};
*/


// // // /


+ 54
- 0
360.маскиПрыжков.js View File

@@ -0,0 +1,54 @@
мир.маскиПрыжков = {
задано: {},
};


// // // //


мир.ключники.push(function(ключ, путь, значение){
if (!путь[0].startsWith("маскиПрыжков"))
{
return;
}

var имя = путь[1];
var свойство = путь.slice(2).join(".");
if (!мир.маскиПрыжков.задано[имя])
{
мир.маскиПрыжков.задано[имя] = {};
}
мир.маскиПрыжков.задано[имя][свойство] = значение;
});


// // // //


мир.маскиПрыжков.обновить = function()
{
var за = мир.маскиПрыжков.задано;

for (var имя in за)
{
var з = за[имя];
var объект = з["объект"];
var скорость = з["скорость"];
var маскаДо = з["маски.0"];
var маскаПосле = з["маски.1"];
if (!объект || (скорость == null) || (маскаДо == null) || (маскаПосле == null))
{
continue;
}

var тело = мир.объекты.тела[объект];
if (!тело)
{
continue;
}

var маска = (тело.velocity.y < скорость) ? маскаДо : маскаПосле;
тело.collisionFilter.mask = маска;
}
};

+ 1
- 0
700.пуск.js View File

@@ -4,6 +4,7 @@
мир.объекты.обновить();
мир.игрок.обновить();
мир.слежение.обновить();
мир.маскиПрыжков.обновить();
requestAnimationFrame(мир.обновить);
};



+ 29
- 22
800.пример.json.js View File

@@ -21,7 +21,7 @@
ширина: 355,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
display: "none",
},
},
полКрышки: {
@@ -30,7 +30,7 @@
ширина: 135,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
display: "none",
},
},
полСправа: {
@@ -39,7 +39,7 @@
ширина: 1505,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
display: "none",
},
},
стол: {
@@ -48,7 +48,7 @@
ширина: 610,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
display: "none",
},
физика: {
collisionFilter: {
@@ -62,7 +62,7 @@
ширина: 200,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
display: "none",
},
физика: {
angle: -0.0698,
@@ -112,7 +112,7 @@
},
игрок: {
объект: "кирпич",
скорость: [5, 12],
скорость: [5, 12.5],
клавиши: ["ArrowLeft", "ArrowRight", "ArrowUp"],
},
слежение: {
@@ -127,6 +127,13 @@
скорость: 0.1,
},
},
маскиПрыжков: {
игрок: {
объект: "кирпич",
скорость: -1,
маски: [1, 1|2],
},
},
});

// // // //
@@ -141,7 +148,7 @@
ширина: 550,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
display: "none",
},
физика: {
collisionFilter: {
@@ -156,7 +163,7 @@
высота: 10,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
display: "none",
},
физика: {
collisionFilter: {
@@ -171,7 +178,7 @@
высота: 10,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
display: "none",
},
физика: {
collisionFilter: {
@@ -186,7 +193,7 @@
высота: 10,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
display: "none",
},
физика: {
collisionFilter: {
@@ -201,7 +208,7 @@
высота: 10,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
display: "none",
},
физика: {
collisionFilter: {
@@ -216,7 +223,7 @@
высота: 10,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
display: "none",
},
физика: {
collisionFilter: {
@@ -231,7 +238,7 @@
высота: 10,
вид: {
background: "url(р/отладка/основа.jpg)",
//display: "none",
display: "none",
},
физика: {
collisionFilter: {
@@ -267,14 +274,6 @@
подкинули: false,
};

/*
мир.отладка = {
сенсор: null,
стрела: null,
срабатывание: false,
};
*/

мир.разобрать({
объекты: {
сенсор: {
@@ -314,6 +313,7 @@
ширина: 100,
вид: {
background: "url(р/отладка/основа.jpg)",
display: "none",
},
физика: {
isStatic: true,
@@ -361,9 +361,16 @@
мир.подкидываниеСтрелы.подкинули = true;
Matter.Body.setVelocity(
мир.объекты.тела.стрела,
{ x: 0, y: -мир.игрок.приземление.скорость * 2 }
{ x: 0, y: -мир.игрок.приземление.скорость * 1.2 }
);
},
],
},
маскиПрыжков: {
стрела: {
объект: "стрела",
скорость: -1,
маски: [0, 2|4]
},
},
});

+ 1
- 0
index.html View File

@@ -38,6 +38,7 @@
<script src="300.действия.js"></script>
<script src="320.игрок.js"></script>
<script src="340.слежение.js"></script>
<script src="360.маскиПрыжков.js"></script>
<script src="400.столкновения.js"></script>
<script src="700.пуск.js"></script>
<script src="800.пример.json.js"></script>


Loading…
Cancel
Save