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

113 lines
2.8 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() {
переместитьИгрока();
задатьИгрокуМаскуСтолкновения();
},
соединение: null,
};
// // // //
мир.ключники.push(function(ключ, путь, значение){
if (!ключ.startsWith("игрок"))
{
return;
}
var свойство = путь.slice(1).join(".");
мир.игрок.задано[свойство] = значение;
одинРазСоздатьСоединение();
});
// // // //
function одинРазСоздатьСоединение()
{
if (мир.игрок.соединение)
{
return;
}
/*
var фи = {
isStatic: false,
inertia: Infinity,
collisionFilter: {
mask: 1,
},
};
var игрок = Matter.Bodies.rectangle(1170, 350, 70, 10, фи);
*/
//Matter.Composite.add(мир.физика.движок.world, тело);
console.debug("создано соединение");
}
// // // //
function переместитьИгрока()
{
//var тело = мир.объекты.тела[мир.игрок.задано.объект];
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.00001) ? -скоростьВ : тело.velocity.y;
var скоростьX = 0;
if (влево)
{
скоростьX = -скоростьГ;
}
else if (вправо)
{
скоростьX = скоростьГ;
}
Matter.Sleeping.set(тело, false);
Matter.Body.setVelocity(тело, { x: скоростьX, y: скоростьY });
}
// // // //
function задатьИгрокуМаскуСтолкновения()
{
//var тело = мир.объекты.тела[мир.игрок.задано.объект];
var тело = мир.объекты.тела["игрок"];
if (!тело)
{
return;
}
var прыжок = тело.velocity.y < -1;
var маска = прыжок ? 1 : (1 | 2);
тело.collisionFilter.mask = маска;
}