Как в 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 и происходит пересечение с другим объектом. Но получается так, что персонаж начинает проходить сквозь объект а удар вместо одного раза, наносится столько раз, сколько зажата клавиша. Я приблизительно представляю как всё это можно исправить, но может быть есть какие то паттерны для решения этой задачи?
  • Вопрос задан
  • 397 просмотров
Пригласить эксперта
Ответы на вопрос 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 отслеживает когда Вы отпустите клавишу, Вам же важно только окгда Вы её нажмёте. Значит размер надо будет уменьшить сразу после удара (после записи в лог).
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
27 нояб. 2024, в 20:27
1500 руб./в час
27 нояб. 2024, в 20:20
3000 руб./за проект
27 нояб. 2024, в 19:08
1500 руб./в час