Files
ogs-site/К/игра/109.управление.js
2021-04-22 15:10:13 +03:00

176 řádky
4.9 KiB
JavaScript
Surový Blame Historie

Tento soubor obsahuje nejednoznačné znaky Unicode

Tento soubor obsahuje znaky Unicode, které mohou být zaměněny s jinými znaky. Pokud si myslíte, že je to záměrné, můžete toto varování bezpečně ignorovat. Použijte tlačítko Escape sekvence k jejich zobrazení.

/*
*
* Реакции
*
*/
НастроитьМышьИКлаву = мир =>
{
мир.сцена.input.mouse.disableContextMenu();
мир.клавиши = мир.сцена.input.keyboard.createCursorKeys();
};
// // // //
УведомитьОМыши = мир =>
{
var мышь = мир.сцена.input.activePointer;
const новое = {
"x": мышь.x,
"y": мышь.y,
"нажата": мышь.isDown,
};
if (
мир.мышь &&
мир.мышь.x == новое.x &&
мир.мышь.y == новое.y &&
мир.мышь.нажата == новое.нажата
) {
// Ничего не делаем.
}
else
{
мир.мышь = новое;
мир.уведомить("изменили мышь");
}
};
// // // //
УведомитьОКлаве = мир =>
{
var новое = {
"направление": 0,
"прыжок": false,
};
if (мир.клавиши.left.isDown)
{
новое.направление = -1;
}
else if (мир.клавиши.right.isDown)
{
новое.направление = 1;
}
if (мир.клавиши.space.isDown || мир.клавиши.up.isDown)
{
новое.прыжок = true;
}
if (
мир.клава &&
мир.клава.направление == новое.направление &&
мир.клава.прыжок == новое.прыжок
) {
// Ничего не делаем.
}
else
{
мир.клава = новое;
мир.уведомить("изменили клаву");
}
};
// // // //
УведомитьОбУправленииКлавой = мир =>
{
const естьДвижение = (мир.клава.направление != 0 || мир.клава.прыжок);
// Начало движения.
if (!мир.управление && естьДвижение)
{
мир.управление = мир.клава;
мир.уведомить("изменили управление");
}
// Окончание движения.
else if (мир.управление && !естьДвижение)
{
мир.управление = null;
мир.уведомить("изменили управление");
}
// Продолжение движения.
else if (
(мир.управление && естьДвижение) &&
(
(мир.управление.направление != мир.клава.направление) ||
(мир.управление.прыжок != мир.клава.прыжок)
)
) {
мир.управление = мир.клава;
мир.уведомить("изменили управление");
}
};
// // // //
УведомитьОбУправленииМышью = мир =>
{
const камера = мир.сцена.cameras.main;
const ширина = камера.width;
const высота = камера.height;
var новое = {
"направление": 0, // Центр.
"прыжок": false,
};
новое.прыжок = (мир.мышь.y < высота * 0.45);
if (мир.мышь.x < ширина * 0.45)
{
новое.направление = -1; // Лево.
}
else if (мир.мышь.x > ширина * 0.55)
{
новое.направление = 1; // Право.
}
// Начало движения.
if (!мир.управление && мир.мышь.нажата)
{
мир.управление = новое;
мир.уведомить("изменили управление");
}
// Окончание движения.
else if (мир.управление && !мир.мышь.нажата)
{
мир.управление = null;
мир.уведомить("изменили управление");
}
// Продолжение движения.
else if (
(мир.управление && мир.мышь.нажата) &&
(
(мир.управление.направление != новое.направление) ||
(мир.управление.прыжок != новое.прыжок)
)
) {
мир.управление = новое;
мир.уведомить("изменили управление");
}
};
/*
*
* Последовательность
*
*/
мир.разобрать(`
создать сцену
настроить мышь и клаву
обновить сцену
уведомить о клаве
уведомить о мыши
изменили мышь
уведомить об управлении мышью
изменили клаву
уведомить об управлении клавой
`);