我正在使用 And Engine 开发一款 2D 横向卷轴安卓游戏。
而Engine使用的是BOX2D物理引擎。
在我的游戏中,我有一个名为“移动平台”的对象。这是一个简单的平台,它在右/左方向上移动,并根据其当前的 X 坐标不断改变其移动方向。它工作正常,我正在使用以下方法移动它:
body.setLinearVelocity(-1 * 5, b.getLinearVelocity().y);
现在我的问题是:很明显,玩家可能会尝试跳上这个移动平台并与之一起移动,但不幸的是,如果玩家不与该平台一起移动,他就会摔倒。
我试图让它像大多数平台游戏一样,如果玩家在平台上,玩家会自己随着平台移动(这样你就不会被迫一直试图留在这个平台上以避免跌倒下)。
到目前为止我已经尝试过或者一直在考虑:
- 在接触监听器中检查玩家的 body 是否接触到平台的 body ,如果是,则将当前平台线速度应用于玩家
- 增加平台的摩擦
到目前为止没有成功,我将不胜感激一些想法/提示。谢谢。
最佳答案
如果平台的摩擦系数为 1,则玩家不应该拥有与其速度相对的速度。所以只需将1f
设置为移动平台FixtureDef
的摩擦力场即可。
如果这不起作用,请确保在创建播放器固定装置 def 时没有传递 0
作为密度,因为运动摩擦计算为:friction=(friction coefficient )*(法向力)
那么在大多数情况下(你的包含在“大多数”中)没有质量的物体(密度 = 0)将没有摩擦。 p>
关于java - 移动平台对象 - 使用 box2D 的 Android 游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8451319/