@@ -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], | |||||
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="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> | ||||