Как в phaser.js реализовать удар по объекту?

Пытаюсь написать небольшой файтинг на phaser.js и столкнулся с проблемой, как реализовать нанесение удара персонажем другому персонажу. В данный момент попробовал реализовать так:
KeyG = game.input.keyboard.addKey(Phaser.Keyboard.G);
KeyG.onDown.add(strike, this);
KeyG.onUp.add(unStrike, this);

function strike () {
    player.body.setSize(60, 50);
}

function unStrike () {
    player.body.setSize(30, 50);
}

game.physics.arcade.overlap(player, player2, figth, null, this);

function figth (player, player2) {
    console.log('figth');
}

При нажатии клавиши "G" у персонажа увеличивается размер body и происходит пересечение с другим объектом. Но получается так, что персонаж начинает проходить сквозь объект а удар вместо одного раза, наносится столько раз, сколько зажата клавиша. Я приблизительно представляю как всё это можно исправить, но может быть есть какие то паттерны для решения этой задачи?
  • Вопрос задан
  • 396 просмотров
Пригласить эксперта
Ответы на вопрос 1
S-ed
@S-ed
Комбайнёр
Как вариант:
KeyG = game.input.keyboard.addKey(Phaser.Keyboard.G);
KeyG.onDown.add(strike, this);

function strike () {
    player.body.setSize(60, 50);
}

function unStrike () {
    player.body.setSize(30, 50);
}

game.physics.arcade.overlap(player, player2, figth, null, this);

function figth (player, player2) {
    console.log('figth');
    unStrike();
}

onUp отслеживает когда Вы отпустите клавишу, Вам же важно только окгда Вы её нажмёте. Значит размер надо будет уменьшить сразу после удара (после записи в лог).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 02:11
5000 руб./за проект
01 мая 2024, в 00:29
2000 руб./за проект
01 мая 2024, в 00:20
15000 руб./за проект