diff --git a/220.игрок.js b/220.игрок.js index 52bb55b..405f990 100644 --- a/220.игрок.js +++ b/220.игрок.js @@ -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; } + мир.игрок.переместить(); + мир.игрок.задатьМаскуСтолкновения(); + мир.игрок.отслеживатьПрыжкиПриземления(); +}; + + +// // // // + + +мир.игрок.переместить = function() +{ var к = [ мир.игрок.задано["клавиши.0"], мир.игрок.задано["клавиши.1"], - мир.игрок.задано["клавиши.2"], + //мир.игрок.задано["клавиши.2"], ]; var влево = (мир.ввод.клавиши[к[0]] == true); var вправо = (мир.ввод.клавиши[к[1]] == true); - var вверх = (мир.ввод.клавиши[к[2]] == true); var скоростьГ = мир.игрок.задано["скорость.0"]; - var скоростьВ = мир.игрок.задано["скорость.1"]; - var скоростьY = (вверх && Math.abs(тело.velocity.y) <= 0.00001) ? -скоростьВ : тело.velocity.y; var скоростьX = 0; + + //var вверх = (мир.ввод.клавиши[к[2]] == true); + //var скоростьY = (вверх && Math.abs(тело.velocity.y) <= 0.00001) ? -скоростьВ : тело.velocity.y; + var скоростьВ = мир.игрок.задано["скорость.1"]; + var скоростьY = (мир.игрок.прыжок.статус == 1) ? -скоростьВ : мир.игрок.тело.velocity.y; + if (влево) { скоростьX = -скоростьГ; @@ -57,8 +69,8 @@ скорость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() { - var тело = мир.объекты.тела[мир.игрок.задано.объект]; - if (!тело) - { - return; - } - - var прыжок = тело.velocity.y < -1; + var прыжок = мир.игрок.тело.velocity.y < -1; var маска = прыжок ? 1 : (1 | 2); - тело.collisionFilter.mask = маска; + мир.игрок.тело.collisionFilter.mask = маска; + +/* if (тело.velocity.y < мир.игрок.minv) { мир.игрок.minv = тело.velocity.y; @@ -91,5 +99,47 @@ if (Math.abs(мир.игрок.было - тело.velocity.y) > 0.001) мир.игрок.было = тело.velocity.y; 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("закончили прыжок"); + } };