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