Files
mjs/00150.игрок.js

76 lines
2.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

мир.игрок = {
задано: {},
обновить: function() {
переместитьИгрока();
задатьИгрокуМаскуСтолкновения();
},
};
// // // //
мир.ключники.push(function(ключ, путь, значение){
if (!ключ.startsWith("игрок"))
{
return;
}
var свойство = путь.slice(1).join(".");
мир.игрок.задано[свойство] = значение;
});
// // // //
function переместитьИгрока()
{
var тело = мир.объекты.тела[мир.игрок.задано.объект];
if (!тело)
{
return;
}
var к = [
мир.игрок.задано["клавиши.0"],
мир.игрок.задано["клавиши.1"],
мир.игрок.задано["клавиши.2"],
];
var влево = (мир.ввод.клавиши[к[0]] == true);
var вправо = (мир.ввод.клавиши[к[1]] == true);
var вверх = (мир.ввод.клавиши[к[2]] == true);
var скоростьГ = мир.игрок.задано["скорость.0"];
var скоростьВ = мир.игрок.задано["скорость.1"];
var скоростьY = (вверх && Math.abs(тело.velocity.y) <= 0.0000000000001) ? -скоростьВ : тело.velocity.y;
var скоростьX = 0;
if (влево)
{
скоростьX = -скоростьГ;
}
else if (вправо)
{
скоростьX = скоростьГ;
}
Matter.Sleeping.set(тело, false);
Matter.Body.setVelocity(тело, { x: скоростьX, y: скоростьY });
}
// // // //
function задатьИгрокуМаскуСтолкновения()
{
var тело = мир.объекты.тела[мир.игрок.задано.объект];
if (!тело)
{
return;
}
var маска = (тело.velocity.y < -1) ? 2 : 1;
тело.collisionFilter.mask = маска;
}