Browse Source

прыжок

master
parent
commit
71076d20c0
1 changed files with 74 additions and 24 deletions
  1. +74
    -24
      220.игрок.js

+ 74
- 24
220.игрок.js View File

@@ -1,12 +1,11 @@
мир.игрок = { мир.игрок = {
задано: {}, задано: {},
обновить: function() {
мир.игрок.переместить();
мир.игрок.задатьМаскуСтолкновения();
прыжок: {
статус: 0,
время: new Date(),
скоростьОтсутствия: 0.0001,
}, },
maxv: 0,
minv: 0,
было: 0,
тело: null,
}; };




@@ -27,27 +26,40 @@
// // // // // // // //




мир.игрок.переместить = function()
{
var тело = мир.объекты.тела[мир.игрок.задано.объект];
if (!тело)
мир.игрок.обновить = function() {
мир.игрок.тело = мир.объекты.тела[мир.игрок.задано.объект];
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.Body.setVelocity(тело, { x: скоростьX, y: скоростьY });
Matter.Sleeping.set(мир.игрок.тело, false);
Matter.Body.setVelocity(мир.игрок.тело, { x: скоростьX, y: скоростьY });
}; };




@@ -67,15 +79,11 @@


мир.игрок.задатьМаскуСтолкновения = function() мир.игрок.задатьМаскуСтолкновения = function()
{ {
var тело = мир.объекты.тела[мир.игрок.задано.объект];
if (!тело)
{
return;
}

var прыжок = тело.velocity.y < -1;
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("закончили прыжок");
}
}; };

Loading…
Cancel
Save