【问题标题】:LibGDX: move and then stop box2d immediatelyLibGDX:移动然后立即停止 box2d
【发布时间】:2017-11-14 21:26:05
【问题描述】:

我正在开发 LibGDX 中的一个项目。 这是一款2D平台游戏。你可以说它就像超级马里奥。

这就是我将播放器向右移动的方式:

if (Gdx.input.isKeyPressed(Input.Keys.RIGHT))
    player.b2body.applyLinearImpulse(new Vector2(0.1f, 0), player.b2body.getWorldCenter(), true);
}

当我离开钥匙时,播放器仍在移动。 (我认为他的身体上仍然有“线性脉冲”力)。

我怎样才能让它停下来?

我的问题可能很简单: 在按住键的同时将 LibGDX 上的身体向一个方向移动的最佳方法是什么。当我离开钥匙时,播放器立即停止。

bdw - 我尝试使用“setTransform”,当身体接触其他物体时它会出现问题 - 加上 sahpe 出现在屏幕中的游戏其余部分“之前”(你可以看到它调试中)

谢谢。

【问题讨论】:

    标签: java libgdx box2d game-physics


    【解决方案1】:

    你的方法没问题。我还建议设置你身体的最大速度:

    if (Gdx.input.isKeyPressed(Input.Keys.RIGHT) && player.b2body.getLinearVelocity().x < maxSpeed)
        player.b2body.applyLinearImpulse(new Vector2(0.1f, 0), player.b2body.getWorldCenter(), true);
    }
    

    使用setLinearVelocity 方法立即停止你的身体。:

    player.b2body.setLinearVelocity(0f, 0f);
    

    【讨论】:

    • @icarumbas 这是我设置它的方式:pastebin.com/Kjng1uEf 当按下移动键时,玩家正在运行和停止,运行和停止......我该如何解决?
    • @ROSA 移动这个:player2body.getLinearVelocity().x &lt;= 12.00f 和这个 player2body.getLinearVelocity().x &gt;= -12.00f 在 if 语句中。我的意思是删除&amp;&amp; 并创建另一个if
    • @Sebastian 感谢您纠正我的语法。正在努力。
    • 感谢您的帮助。它正在按照我的意愿工作。
    • @ROSA 很高兴我的回答对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多