|
- мир.игрок = {
- задано: {},
- прыжок: {
- статус: 0,
- время: new Date(),
- скоростьОтсутствия: 0.0001,
- },
- приземление: {
- скорость: 0,
- },
- тело: null,
- };
-
-
- // // // //
-
-
- мир.ключники.push(function(ключ, путь, значение){
- if (!ключ.startsWith("игрок"))
- {
- return;
- }
-
- var свойство = путь.slice(1).join(".");
- мир.игрок.задано[свойство] = значение;
- });
-
-
- // // // //
-
-
- мир.игрок.обновить = function() {
- мир.игрок.тело = мир.объекты.тела[мир.игрок.задано.объект];
- if (!мир.игрок.тело)
- {
- return;
- }
-
- мир.игрок.переместить();
- //мир.игрок.задатьМаскуСтолкновения();
- мир.игрок.отслеживатьПрыжкиПриземления();
- };
-
-
- // // // //
-
-
- мир.игрок.переместить = function()
- {
- var к = [
- мир.игрок.задано["клавиши.0"],
- мир.игрок.задано["клавиши.1"],
- //мир.игрок.задано["клавиши.2"],
- ];
- var влево = (мир.ввод.клавиши[к[0]] == true);
- var вправо = (мир.ввод.клавиши[к[1]] == true);
-
- var скоростьГ = мир.игрок.задано["скорость.0"];
- var скоростьX = 0;
- var скоростьВ = мир.игрок.задано["скорость.1"];
- var скоростьY = (мир.игрок.прыжок.статус == 1) ? -скоростьВ : мир.игрок.тело.velocity.y;
-
- if (влево)
- {
- скоростьX = -скоростьГ;
- }
- else if (вправо)
- {
- скоростьX = скоростьГ;
- }
-
- Matter.Sleeping.set(мир.игрок.тело, false);
- Matter.Body.setVelocity(мир.игрок.тело, { x: скоростьX, y: скоростьY });
- };
-
-
- // // // /
-
-
- мир.игрок.отслеживатьПрыжкиПриземления = function()
- {
- if (мир.игрок.прыжок.статус == 1)
- {
- мир.игрок.прыжок.статус = 2;
- мир.события.уведомить("игрок в прыжке");
- }
- var нетДвижения = (Math.abs(мир.игрок.тело.velocity.y) < мир.игрок.прыжок.скоростьОтсутствия);
- var клавиша = мир.игрок.задано["клавиши.2"];
- var вверх = (мир.ввод.клавиши[клавиша] == true);
- if (
- мир.игрок.прыжок.статус == 0 &&
- вверх &&
- нетДвижения
- ) {
- мир.игрок.прыжок.статус = 1;
- мир.игрок.приземление.скорость = 0;
- мир.события.уведомить("игрок начал прыжок");
- }
-
- if (мир.игрок.прыжок.статус != 2)
- {
- return;
- }
-
- var скорость = мир.игрок.тело.velocity.y;
- if (скорость > мир.игрок.приземление.скорость)
- {
- мир.игрок.приземление.скорость = скорость;
- }
-
- var сейчас = new Date();
- var прошло = сейчас - мир.игрок.прыжок.время;
- if (
- (прошло > 20) &&
- нетДвижения
- ) {
- мир.игрок.прыжок.время = сейчас;
- мир.игрок.прыжок.статус = 0;
- мир.события.уведомить("игрок приземлился");
- }
- };
|