Browse Source

движение

master
parent
commit
45d6318a33
4 changed files with 105 additions and 17 deletions
  1. +97
    -0
      200.движение.js
  2. +2
    -0
      700.пуск.js
  3. +5
    -17
      800.пример.json.js
  4. +1
    -0
      index.html

+ 97
- 0
200.движение.js View 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.создать();
}

+ 2
- 0
700.пуск.js View File

@@ -5,6 +5,7 @@ function Пуск()
мир.физика.создать();
мир.столкновения.создать();
мир.звуки = new Звуки(мир.ключники, мир.события);
мир.движение = new Движение(мир.ключники);
this.обновить();
};

@@ -15,6 +16,7 @@ function Пуск()
мир.игрок.обновить();
мир.слежение.обновить();
мир.маскиПрыжков.обновить();
мир.движение.обновить();
var тут = this;
requestAnimationFrame(function() {
тут.обновить();


+ 5
- 17
800.пример.json.js View File

@@ -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
);

+ 1
- 0
index.html View File

@@ -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>


Loading…
Cancel
Save