Мне нужна помощь в школьном проекте и вы хотите закодировать игру как Headsoccer в Phaser с P2 Physics, у меня уже есть два игрока, два мяча и мяч, который может столкнуться друг с другом. Теперь я хочу добавить анимацию с ударом и ударную площадку для удара, который при ударе по мячу прикладывает импульс или какую-то силу от удара. Как я мог это сделать?
Благодарю.
Вот какой код. Было бы неплохо, если бы вы могли дать мне несколько советов о том, как лучше структурировать мой код или я могу что-то изменить
function create() {
game.world.setBounds(0, 0, 800, 500);
game.physics.startSystem(Phaser.Physics.P2JS);
//game.physics.p2.enable([ player, player2, fussball, goal, latte ], true);
//game.physics.arcade.gravity.y = 200;
game.add.tileSprite(0, 0, 800, 600, 'Spielfeld');
game.physics.p2.gravity.y = 600;
goal = game.add.sprite(35, 428, 'goal');
game.physics.p2.enable(goal,true);
goal.body.static = true;
goal.physicsBodyType = Phaser.Physics.P2JS;
goal.body.data.shapes[0].sensor = true;
player = game.add.sprite(100, 500, 'player');
game.physics.p2.enable(player,true);
player.anchor.setTo(0.5, 0.5);
player.body.collideWorldBounds = true;
player.body.fixedRotation = true;
player.body.clearShapes();
player.body.loadPolygon('playerPhysics','player');
player2 = game.add.sprite(500, 500, 'player');
game.physics.p2.enable(player2);
player2.anchor.setTo(0.5, 0.5);
player2.body.collideWorldBounds = true;
player2.body.fixedRotation = true;
var shape = new p2.Circle();
ball = game.add.sprite( game.world.centerX, game.world.centerY, 'ball');
game.physics.p2.enable(ball);
ball.anchor.setTo(0.5, 0.5);
ball.body.collideWorldBounds = true;
ball.body.data.gravityScale = 1;
ball.body.clearShapes();
ball.body.addCircle(shape);
Моя игра выглядит так, и я показал хит-бокс игрока 1 и цели.
Поскольку у нас нет какого-либо кода для работы, я предполагаю, что у вас есть что-то вроде официального примера примера событий воздействия.
В этом случае вы можете играть в анимацию, когда один из игроков сталкивается с мячом. В приведенном выше примере это изменит этот метод для воспроизведения анимации (вместо изменения alpha
спрайта):
function hitPanda(body1, body2) {
body2.sprite.alpha -= 0.1; // Remove/replace this line.
// Add the playing of the kick animation.
body1.play('kick');
}
В этой же области вы можете применить ускорение скорости к мячу.