движение
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 Звуки(мир.ключники, мир.события);
|
||||||
|
мир.движение = new Движение(мир.ключники);
|
||||||
this.обновить();
|
this.обновить();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -15,6 +16,7 @@ function Пуск()
|
|||||||
мир.игрок.обновить();
|
мир.игрок.обновить();
|
||||||
мир.слежение.обновить();
|
мир.слежение.обновить();
|
||||||
мир.маскиПрыжков.обновить();
|
мир.маскиПрыжков.обновить();
|
||||||
|
мир.движение.обновить();
|
||||||
var тут = this;
|
var тут = this;
|
||||||
requestAnimationFrame(function() {
|
requestAnimationFrame(function() {
|
||||||
тут.обновить();
|
тут.обновить();
|
||||||
|
|||||||
@@ -463,7 +463,7 @@ console.debug("событие", событие);
|
|||||||
мир.разобрать({
|
мир.разобрать({
|
||||||
объекты: {
|
объекты: {
|
||||||
паук1: {
|
паук1: {
|
||||||
x: 1180,
|
x: 680,
|
||||||
y: 300,
|
y: 300,
|
||||||
ширина: 30,
|
ширина: 30,
|
||||||
вид: {
|
вид: {
|
||||||
@@ -481,24 +481,12 @@ console.debug("событие", событие);
|
|||||||
событие: "игрокПаук1",
|
событие: "игрокПаук1",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
постоянноеДвижение: {
|
движение: {
|
||||||
паук1: {
|
паук1: {
|
||||||
объекты: ["паук1"],
|
объекты: ["паук1"],
|
||||||
скорость: [0, 1],
|
скорость: [0.7, 1],
|
||||||
x: [1180, 1180],
|
x: [610, 1080],
|
||||||
y: [300, 500],
|
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="140.изображения.js"></script>
|
||||||
<script src="160.объекты.js"></script>
|
<script src="160.объекты.js"></script>
|
||||||
<script src="180.ввод.js"></script>
|
<script src="180.ввод.js"></script>
|
||||||
|
<script src="200.движение.js"></script>
|
||||||
<script src="300.события.js"></script>
|
<script src="300.события.js"></script>
|
||||||
<script src="320.игрок.js"></script>
|
<script src="320.игрок.js"></script>
|
||||||
<script src="340.слежение.js"></script>
|
<script src="340.слежение.js"></script>
|
||||||
|
|||||||
Reference in New Issue
Block a user