прыжок
This commit is contained in:
98
220.игрок.js
98
220.игрок.js
@@ -1,12 +1,11 @@
|
|||||||
мир.игрок = {
|
мир.игрок = {
|
||||||
задано: {},
|
задано: {},
|
||||||
обновить: function() {
|
прыжок: {
|
||||||
мир.игрок.переместить();
|
статус: 0,
|
||||||
мир.игрок.задатьМаскуСтолкновения();
|
время: new Date(),
|
||||||
|
скоростьОтсутствия: 0.0001,
|
||||||
},
|
},
|
||||||
maxv: 0,
|
тело: null,
|
||||||
minv: 0,
|
|
||||||
было: 0,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -27,27 +26,40 @@
|
|||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
мир.игрок.переместить = function()
|
мир.игрок.обновить = function() {
|
||||||
{
|
мир.игрок.тело = мир.объекты.тела[мир.игрок.задано.объект];
|
||||||
var тело = мир.объекты.тела[мир.игрок.задано.объект];
|
if (!мир.игрок.тело)
|
||||||
if (!тело)
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
мир.игрок.переместить();
|
||||||
|
мир.игрок.задатьМаскуСтолкновения();
|
||||||
|
мир.игрок.отслеживатьПрыжкиПриземления();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
мир.игрок.переместить = function()
|
||||||
|
{
|
||||||
var к = [
|
var к = [
|
||||||
мир.игрок.задано["клавиши.0"],
|
мир.игрок.задано["клавиши.0"],
|
||||||
мир.игрок.задано["клавиши.1"],
|
мир.игрок.задано["клавиши.1"],
|
||||||
мир.игрок.задано["клавиши.2"],
|
//мир.игрок.задано["клавиши.2"],
|
||||||
];
|
];
|
||||||
var влево = (мир.ввод.клавиши[к[0]] == true);
|
var влево = (мир.ввод.клавиши[к[0]] == true);
|
||||||
var вправо = (мир.ввод.клавиши[к[1]] == true);
|
var вправо = (мир.ввод.клавиши[к[1]] == true);
|
||||||
var вверх = (мир.ввод.клавиши[к[2]] == true);
|
|
||||||
|
|
||||||
var скоростьГ = мир.игрок.задано["скорость.0"];
|
var скоростьГ = мир.игрок.задано["скорость.0"];
|
||||||
var скоростьВ = мир.игрок.задано["скорость.1"];
|
|
||||||
var скоростьY = (вверх && Math.abs(тело.velocity.y) <= 0.00001) ? -скоростьВ : тело.velocity.y;
|
|
||||||
var скоростьX = 0;
|
var скоростьX = 0;
|
||||||
|
|
||||||
|
//var вверх = (мир.ввод.клавиши[к[2]] == true);
|
||||||
|
//var скоростьY = (вверх && Math.abs(тело.velocity.y) <= 0.00001) ? -скоростьВ : тело.velocity.y;
|
||||||
|
var скоростьВ = мир.игрок.задано["скорость.1"];
|
||||||
|
var скоростьY = (мир.игрок.прыжок.статус == 1) ? -скоростьВ : мир.игрок.тело.velocity.y;
|
||||||
|
|
||||||
if (влево)
|
if (влево)
|
||||||
{
|
{
|
||||||
скоростьX = -скоростьГ;
|
скоростьX = -скоростьГ;
|
||||||
@@ -57,8 +69,8 @@
|
|||||||
скоростьX = скоростьГ;
|
скоростьX = скоростьГ;
|
||||||
}
|
}
|
||||||
|
|
||||||
Matter.Sleeping.set(тело, false);
|
Matter.Sleeping.set(мир.игрок.тело, false);
|
||||||
Matter.Body.setVelocity(тело, { x: скоростьX, y: скоростьY });
|
Matter.Body.setVelocity(мир.игрок.тело, { x: скоростьX, y: скоростьY });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -67,15 +79,11 @@
|
|||||||
|
|
||||||
мир.игрок.задатьМаскуСтолкновения = function()
|
мир.игрок.задатьМаскуСтолкновения = function()
|
||||||
{
|
{
|
||||||
var тело = мир.объекты.тела[мир.игрок.задано.объект];
|
var прыжок = мир.игрок.тело.velocity.y < -1;
|
||||||
if (!тело)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var прыжок = тело.velocity.y < -1;
|
|
||||||
var маска = прыжок ? 1 : (1 | 2);
|
var маска = прыжок ? 1 : (1 | 2);
|
||||||
тело.collisionFilter.mask = маска;
|
мир.игрок.тело.collisionFilter.mask = маска;
|
||||||
|
|
||||||
|
/*
|
||||||
if (тело.velocity.y < мир.игрок.minv)
|
if (тело.velocity.y < мир.игрок.minv)
|
||||||
{
|
{
|
||||||
мир.игрок.minv = тело.velocity.y;
|
мир.игрок.minv = тело.velocity.y;
|
||||||
@@ -91,5 +99,47 @@ if (Math.abs(мир.игрок.было - тело.velocity.y) > 0.001)
|
|||||||
мир.игрок.было = тело.velocity.y;
|
мир.игрок.было = тело.velocity.y;
|
||||||
console.debug("vel", мир.игрок.было);
|
console.debug("vel", мир.игрок.было);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // /
|
||||||
|
|
||||||
|
|
||||||
|
мир.игрок.отслеживатьПрыжкиПриземления = function()
|
||||||
|
{
|
||||||
|
if (мир.игрок.прыжок.статус == 1)
|
||||||
|
{
|
||||||
|
мир.игрок.прыжок.статус = 2;
|
||||||
|
console.debug("в прыжке");
|
||||||
|
}
|
||||||
|
var нетДвижения = (Math.abs(мир.игрок.тело.velocity.y) < мир.игрок.прыжок.скоростьОтсутствия);
|
||||||
|
var клавиша = мир.игрок.задано["клавиши.2"];
|
||||||
|
var вверх = (мир.ввод.клавиши[клавиша] == true);
|
||||||
|
document.getElementById("отладка").innerHTML = `!статус/вверх/нетДвижения: '${!мир.игрок.прыжок.статус}'/'${вверх}'/'${нетДвижения}'`;
|
||||||
|
if (
|
||||||
|
мир.игрок.прыжок.статус == 0 &&
|
||||||
|
вверх &&
|
||||||
|
нетДвижения
|
||||||
|
) {
|
||||||
|
мир.игрок.прыжок.статус = 1;
|
||||||
|
console.debug("начали прыжок");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (мир.игрок.прыжок.статус != 2)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var сейчас = new Date();
|
||||||
|
var прошло = сейчас - мир.игрок.прыжок.время;
|
||||||
|
if (
|
||||||
|
(прошло > 20) &&
|
||||||
|
нетДвижения
|
||||||
|
) {
|
||||||
|
мир.игрок.прыжок.время = сейчас;
|
||||||
|
мир.игрок.прыжок.статус = 0;
|
||||||
|
console.debug("закончили прыжок");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user