почти стрела

This commit is contained in:
2021-07-27 15:43:29 +03:00
parent 088b978343
commit c173f0f6ae
5 changed files with 88 additions and 42 deletions

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", мир.игрок.было);
}
*/
};
*/
// // // /

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 = маска;
}
};

View File

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

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]
},
},
});

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>