движение
This commit is contained in:
97
200.движение.js
Normal file
97
200.движение.js
Normal file
@@ -0,0 +1,97 @@
|
||||
function Движение(ключники) {
|
||||
this.создать = function()
|
||||
{
|
||||
this.задано = {};
|
||||
var тут = this;
|
||||
ключники.push(function(ключ, путь, значение) {
|
||||
if (!путь[0].startsWith("движение"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
тут.обработатьКлюч(ключ, путь, значение);
|
||||
});
|
||||
};
|
||||
|
||||
this.обработатьКлюч = function(ключ, путь, значение)
|
||||
{
|
||||
var имя = путь[1];
|
||||
var свойство = путь.slice(2).join(".");
|
||||
if (!this.задано[имя])
|
||||
{
|
||||
this.задано[имя] = {};
|
||||
}
|
||||
this.задано[имя][свойство] = значение;
|
||||
};
|
||||
|
||||
this.обновить = function()
|
||||
{
|
||||
for (var имя in this.задано)
|
||||
{
|
||||
var значения = this.задано[имя];
|
||||
for (var свойство in значения)
|
||||
{
|
||||
if (свойство.startsWith("объект"))
|
||||
{
|
||||
var объект = значения[свойство];
|
||||
this.передвинуть(объект, значения);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
this.передвинуть = function(объект, значения)
|
||||
{
|
||||
var тело = мир.объекты.тела[объект];
|
||||
var скоростьX = значения["скорость.0"];
|
||||
var скоростьY = значения["скорость.1"];
|
||||
var началоX = значения["x.0"];
|
||||
var конецX = значения["x.1"];
|
||||
var началоY = значения["y.0"];
|
||||
var конецY = значения["y.1"];
|
||||
|
||||
if (
|
||||
!тело ||
|
||||
(скоростьX == null) ||
|
||||
(скоростьY == null) ||
|
||||
(началоX == null) ||
|
||||
(началоY == null) ||
|
||||
(конецX == null) ||
|
||||
(конецY == null)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!тело.скоростьX)
|
||||
{
|
||||
тело.скоростьX = скоростьX;
|
||||
}
|
||||
if (!тело.скоростьY)
|
||||
{
|
||||
тело.скоростьY = скоростьY;
|
||||
}
|
||||
|
||||
if (тело.position.x < началоX)
|
||||
{
|
||||
тело.скоростьX = скоростьX;
|
||||
}
|
||||
else if (тело.position.x > конецX)
|
||||
{
|
||||
тело.скоростьX = скоростьX * -1;
|
||||
}
|
||||
|
||||
if (тело.position.y < началоY)
|
||||
{
|
||||
тело.скоростьY = скоростьY;
|
||||
}
|
||||
else if (тело.position.y > конецY)
|
||||
{
|
||||
тело.скоростьY = скоростьY * -1 * мир.физика.движок.gravity.y;
|
||||
}
|
||||
|
||||
Matter.Sleeping.set(тело, false);
|
||||
Matter.Body.setVelocity(тело, { x: тело.скоростьX, y: тело.скоростьY });
|
||||
};
|
||||
|
||||
// Конструктор.
|
||||
this.создать();
|
||||
}
|
||||
@@ -5,6 +5,7 @@ function Пуск()
|
||||
мир.физика.создать();
|
||||
мир.столкновения.создать();
|
||||
мир.звуки = new Звуки(мир.ключники, мир.события);
|
||||
мир.движение = new Движение(мир.ключники);
|
||||
this.обновить();
|
||||
};
|
||||
|
||||
@@ -15,6 +16,7 @@ function Пуск()
|
||||
мир.игрок.обновить();
|
||||
мир.слежение.обновить();
|
||||
мир.маскиПрыжков.обновить();
|
||||
мир.движение.обновить();
|
||||
var тут = this;
|
||||
requestAnimationFrame(function() {
|
||||
тут.обновить();
|
||||
|
||||
@@ -463,7 +463,7 @@ console.debug("событие", событие);
|
||||
мир.разобрать({
|
||||
объекты: {
|
||||
паук1: {
|
||||
x: 1180,
|
||||
x: 680,
|
||||
y: 300,
|
||||
ширина: 30,
|
||||
вид: {
|
||||
@@ -481,24 +481,12 @@ console.debug("событие", событие);
|
||||
событие: "игрокПаук1",
|
||||
},
|
||||
},
|
||||
постоянноеДвижение: {
|
||||
движение: {
|
||||
паук1: {
|
||||
объекты: ["паук1"],
|
||||
скорость: [0, 1],
|
||||
x: [1180, 1180],
|
||||
y: [300, 500],
|
||||
скорость: [0.7, 1],
|
||||
x: [610, 1080],
|
||||
y: [350, 450],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
// Двигать паука руками.
|
||||
|
||||
setInterval(
|
||||
function() {
|
||||
var тело = мир.объекты.тела["паук1"];
|
||||
Matter.Sleeping.set(тело, false);
|
||||
Matter.Body.setVelocity(тело, { x: 0, y: 0.2 });
|
||||
},
|
||||
10
|
||||
);
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
<script src="140.изображения.js"></script>
|
||||
<script src="160.объекты.js"></script>
|
||||
<script src="180.ввод.js"></script>
|
||||
<script src="200.движение.js"></script>
|
||||
<script src="300.события.js"></script>
|
||||
<script src="320.игрок.js"></script>
|
||||
<script src="340.слежение.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user