Compare commits

...

4 Commits

6 changed files with 100 additions and 5 deletions

View File

@@ -1,7 +1,7 @@
мир.физика = { мир.физика = {
движок: null, движок: null,
настройки: { настройки: {
enableSleeping: true, enableSleeping: false,
}, },
создать: function() { создать: function() {
мир.физика.движок = Matter.Engine.create(мир.физика.настройки); мир.физика.движок = Matter.Engine.create(мир.физика.настройки);

View File

@@ -85,6 +85,7 @@ function пересоздатьТело(имя, свойство, значени
var высота = за["высота"] ? за["высота"] : ум["высота"]; var высота = за["высота"] ? за["высота"] : ум["высота"];
var свойства = { var свойства = {
isStatic: ("статика" in за) ? за.статика : ум.статика, isStatic: ("статика" in за) ? за.статика : ум.статика,
inertia: Infinity,
}; };
var тело = Matter.Bodies.rectangle(x, y, ширина, высота, свойства); var тело = Matter.Bodies.rectangle(x, y, ширина, высота, свойства);

53
00135.действия.js Normal file
View File

@@ -0,0 +1,53 @@
мир.действия = {
задано: {},
исполнить: исполнитьДействие,
};
// // // //
мир.ключники.push(function(ключ, путь, значение){
if (!ключ.startsWith("действия"))
{
return;
}
var имя = путь[1];
if (!(имя in мир.действия.задано))
{
мир.действия.задано[имя] = {};
}
var свойство = путь.slice(2).join(".");
мир.действия.задано[имя][свойство] = значение;
});
// // // //
function исполнитьДействие(имя)
{
var действие = мир.действия.задано[имя];
if (!действие)
{
return;
}
var объект = мир.действия.задано[имя]["объект"];
var скоростьX = мир.действия.задано[имя]["скорость.0"];
var скоростьY = мир.действия.задано[имя]["скорость.1"];
if (
объект &&
(скоростьX != null) &&
(скоростьY != null)
) {
console.debug("исполнить действие", имя, объект, скоростьX, скоростьY);
var тело = мир.объекты.тела[объект];
var скорость = {
x: скоростьX + тело.velocity.x,
y: скоростьY + тело.velocity.y,
};
Matter.Body.setVelocity(тело, скорость);
}
};

View File

@@ -1,11 +1,32 @@
/*
мир.клавиши = { мир.клавиши = {
действия: {},
}; };
*/
window.addEventListener("keydown", function(o) { window.addEventListener("keydown", function(o) {
console.debug("keydown", o); //console.debug("keydown", o);
var действие = мир.клавиши.действия[o.key];
if (действие)
{
мир.действия.исполнить(действие);
}
}); });
window.addEventListener("keyup", function(o) { window.addEventListener("keyup", function(o) {
console.debug("keyup", o); //console.debug("keyup", o);
}); });
// // // //
мир.ключники.push(function(ключ, путь, значение){
if (!ключ.startsWith("клавиши"))
{
return;
}
var имя = путь[1];
мир.клавиши.действия[имя] = значение;
});

View File

@@ -20,4 +20,23 @@
}, },
}, },
}, },
клавиши : {
ArrowLeft: "колобокВлево",
ArrowRight: "колобокВправо",
ArrowUp: "колобокВверх",
},
действия: {
колобокВлево: {
объект: "колобок",
скорость: [-10, 0],
},
колобокВправо: {
объект: "колобок",
скорость: [10, 0],
},
колобокВверх: {
объект: "колобок",
скорость: [0, -5],
},
},
}); });

View File

@@ -22,6 +22,7 @@
<script src="00110.заголовок.js"></script> <script src="00110.заголовок.js"></script>
<script src="00120.физика.js"></script> <script src="00120.физика.js"></script>
<script src="00130.объекты.js"></script> <script src="00130.объекты.js"></script>
<script src="00135.действия.js"></script>
<script src="00140.клавиши.js"></script> <script src="00140.клавиши.js"></script>
<script src="01000.пуск.js"></script> <script src="01000.пуск.js"></script>
<script src="01300.пример.json.js"></script> <script src="01300.пример.json.js"></script>