【问题标题】:Phaser P2 Player kick ball and add Impulse on hitPhaser P2 Player 踢球并在击球时添加 Impulse
【发布时间】:2019-03-31 21:43:06
【问题描述】:

我需要一个学校项目的帮助,并且想用 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);

我的游戏是这样的,我展示了 Player 1 和 Goal 的 hitbox。

【问题讨论】:

    标签: javascript phaser-framework


    【解决方案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');
    }
    

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

    【讨论】:

    • 那么每次我按踢球时,速度提升会不会应用到球上?我如何在 P2 Physics 中应用速度提升?谢谢
    • "everytime I press kick":我想我在你的问题中错过了这一点——你希望在用户做某事时发生踢,而不仅仅是在两个物体碰撞时发生?您能否用一些代码更新您的问题,以便我们可以看到您正在尝试做的事情并开始做一些事情?见stackoverflow.com/help/mcve
    猜你喜欢
    • 2021-04-03
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    相关资源
    最近更新 更多