Phaser P2 Player踢球并在命中时添加脉冲

时间:2018-10-27 09:18:11

标签: javascript phaser-framework

我需要一个学校项目的帮助,并且想用P2 Physics开发诸如Phaser中的Headsoccer之类的游戏,我已经有两个球员,两个进球和一个可以相互碰撞的球。现在,我想为踢添加踢动动画和击打框,当踢球时会从踢中施加脉冲或某种作用力。我该怎么办?

谢谢。

这是一些代码 如果您能给我一些有关如何更好地构造代码的建议,或者我可以更改某些内容,那将很好

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和目标的匹配框。

Game screenshot

1 个答案:

答案 0 :(得分:1)

由于我们没有可用的任何代码,因此我假设您已经安装了类似official Impact Events example的代码。

在这种情况下,您可以在其中一名球员与球碰撞时播放动画。在上面的示例中,将更改此方法以播放动画(而不是更改精灵的alpha):

function hitPanda(body1, body2) {
    body2.sprite.alpha -= 0.1; // Remove/replace this line.
    // Add the playing of the kick animation.
    body1.play('kick');
}

然后您可以在同一区域对球施加速​​度提升。