Browse Source

перемещать

tags/4.1
parent
commit
74f29e9cd1
2 changed files with 42 additions and 3 deletions
  1. +40
    -2
      4.1/игра/200.Сцена.js
  2. +2
    -1
      4.1/игра/700.Игра.js

+ 40
- 2
4.1/игра/200.Сцена.js View File

@@ -1,4 +1,4 @@
function Сцена(состояние, события)
function Сцена(состояние, события, тела)
{
this.создать = function()
{
@@ -9,6 +9,11 @@ function Сцена(состояние, события)
события.подписать(this);
};

this.обновить = function()
{
this.переместитьИгрока();
};

this.обработатьКлюч = function(ключ, путь, значение)
{
if (путь[0] != "сцена")
@@ -30,7 +35,7 @@ function Сцена(состояние, события)
return;
}

var тело = мир.тела.тела[цель];
var тело = тела.тела[цель];
if (!тело)
{
return;
@@ -66,6 +71,39 @@ function Сцена(состояние, события)
}
};

this.переместитьИгрока = function()
{
let тип = this.задано["тип"];
let игрок = this.задано["игрок"];
let цель = this.задано["цель"];
let скоростьX = this.задано["скорость.0"];
if (!тип || !игрок || !цель || !скоростьX || тип != "указать и нажать")
{
return;
}

let телоЦели = тела.тела[цель];
let телоИгрока = тела.тела[игрок];
if (!телоЦели || !телоИгрока)
{
return;
}

let игрокX = телоИгрока.position.x;
let цельX = телоЦели.position.x;
let ширина = телоЦели.bounds.max.x - телоЦели.bounds.min.x;
let расстояние = цельX - игрокX;

if (Math.abs(расстояние) < ширина / 2)
{
return;
}
let направление = расстояние > 0 ? 1 : -1;
Matter.Sleeping.set(телоИгрока, false);
Matter.Body.setVelocity(телоИгрока, { x: скоростьX * направление, y: 0 });
};

// Конструктор.
this.создать();
};

+ 2
- 1
4.1/игра/700.Игра.js View File

@@ -18,7 +18,7 @@ function Игра()
мир.тела = new Тела(мир.события, мир.физика, мир.физдвижок.world);
мир.слежение = new Слежение(мир.состояние, мир.изображения, мир.тела);
мир.объекты = new Объекты(мир.состояние);
мир.сцена = new Сцена(мир.состояние, мир.события);
мир.сцена = new Сцена(мир.состояние, мир.события, мир.тела);
мир.мышь = new Мышь(мир.события);
this.ключники = [
new Заголовок(),
@@ -50,6 +50,7 @@ function Игра()
{
Matter.Engine.update(мир.физдвижок);
мир.слежение.обновить();
мир.сцена.обновить();

var тут = this;
requestAnimationFrame(function() {


Loading…
Cancel
Save