У меня есть базовая c игра со змеями, написанная на Phaser 3, и я хотел бы добавить к ней сенсорную навигацию. Текущая навигация выглядит следующим образом (в методе обновления) и для стрелок на клавиатуре:
if (this.cursors.left.isDown ) {
this.snake.faceLeft();
} else if (this.cursors.right.isDown |) {
this.snake.faceRight();
} else if (this.cursors.up.isDown ) {
this.snake.faceUp();
} else if (this.cursors.down.isDown) {
this.snake.faceDown();
}
Я хочу сделать это либо смахиванием, либо касанием (т. Е. Змея идет вверх, пользователь нажимает слева от голова поворачивается влево, пользователь нажимает справа от головы, она направляется вправо). Я пытался сделать это с помощью методов обратного вызова, как в этой теме: ссылка , но я не могу использовать эти значения вне методов обратного вызова. Я попытался добавить сенсорную навигацию с указателем так:
this.pointer = this.input.activePointer;
if (
this.cursors.left.isDown ||
(this.pointer.isDown && this.snake.head.x - this.pointer.x > 0)
) {
this.snake.faceLeft();
} else if (
this.cursors.right.isDown ||
(this.pointer.isDown && this.pointer.x - this.snake.head.x > 0)
) {
this.snake.faceRight();
} else if (
this.cursors.up.isDown ||
(this.pointer.isDown && this.snake.head.y - this.pointer.y > 0)
) {
this.snake.faceUp();
} else if (
this.cursors.down.isDown ||
(this.pointer.isDown && this.pointer.y - this.snake.head.y > 0)
) {
this.snake.faceDown();
}
Но проверка выполняется так быстро, что змея сходит с ума. Любая помощь будет оценена!