перемещать
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
function Сцена(состояние, события)
|
function Сцена(состояние, события, тела)
|
||||||
{
|
{
|
||||||
this.создать = function()
|
this.создать = function()
|
||||||
{
|
{
|
||||||
@@ -9,6 +9,11 @@ function Сцена(состояние, события)
|
|||||||
события.подписать(this);
|
события.подписать(this);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.обновить = function()
|
||||||
|
{
|
||||||
|
this.переместитьИгрока();
|
||||||
|
};
|
||||||
|
|
||||||
this.обработатьКлюч = function(ключ, путь, значение)
|
this.обработатьКлюч = function(ключ, путь, значение)
|
||||||
{
|
{
|
||||||
if (путь[0] != "сцена")
|
if (путь[0] != "сцена")
|
||||||
@@ -30,7 +35,7 @@ function Сцена(состояние, события)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var тело = мир.тела.тела[цель];
|
var тело = тела.тела[цель];
|
||||||
if (!тело)
|
if (!тело)
|
||||||
{
|
{
|
||||||
return;
|
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.создать();
|
this.создать();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ function Игра()
|
|||||||
мир.тела = new Тела(мир.события, мир.физика, мир.физдвижок.world);
|
мир.тела = new Тела(мир.события, мир.физика, мир.физдвижок.world);
|
||||||
мир.слежение = new Слежение(мир.состояние, мир.изображения, мир.тела);
|
мир.слежение = new Слежение(мир.состояние, мир.изображения, мир.тела);
|
||||||
мир.объекты = new Объекты(мир.состояние);
|
мир.объекты = new Объекты(мир.состояние);
|
||||||
мир.сцена = new Сцена(мир.состояние, мир.события);
|
мир.сцена = new Сцена(мир.состояние, мир.события, мир.тела);
|
||||||
мир.мышь = new Мышь(мир.события);
|
мир.мышь = new Мышь(мир.события);
|
||||||
this.ключники = [
|
this.ключники = [
|
||||||
new Заголовок(),
|
new Заголовок(),
|
||||||
@@ -50,6 +50,7 @@ function Игра()
|
|||||||
{
|
{
|
||||||
Matter.Engine.update(мир.физдвижок);
|
Matter.Engine.update(мир.физдвижок);
|
||||||
мир.слежение.обновить();
|
мир.слежение.обновить();
|
||||||
|
мир.сцена.обновить();
|
||||||
|
|
||||||
var тут = this;
|
var тут = this;
|
||||||
requestAnimationFrame(function() {
|
requestAnimationFrame(function() {
|
||||||
|
|||||||
Reference in New Issue
Block a user