Moving Platform对象 - 使用box2D的Android游戏

时间:2011-12-09 20:26:46

标签: java android box2d andengine

我想问下面的问题。

我正在开发2D Side滚动安卓游戏,使用And Engine。

引擎使用BOX2D物理引擎。

在我的游戏中,我有一个名为“移动平台”的对象,它是一个简单的平台,它向右/向左移动,并根据当前的X坐标不断改变其移动方向。它工作正常,我正在使用它来移动它:

    body.setLinearVelocity(-1 * 5, b.getLinearVelocity().y);

现在我的问题是:显然玩家可能会试图跳上这个移动平台随之移动,但不幸的是,如果玩家不会尝试使用这个平台,玩家就会摔倒。

我试图让它像大多数平台游戏一样工作,所以如果玩家在平台上,玩家正在移动平台(所以你不必继续试图留在这个平台上以避免摔倒)

到目前为止,我已经尝试过或者一直在考虑:

  • 在联系人监听器中检查玩家的身体是否正在触摸平台的身体,如果是,则将当前平台的线性速度应用于玩家
  • 增加平台的摩擦力

到目前为止没有成功,我会感激一些想法/提示 - 谢谢。

1 个答案:

答案 0 :(得分:2)

如果平台的摩擦系数为1,则玩家不应该具有与其速度相对的速度。因此,只需将1f设置为移动平台FixtureDef的摩擦字段。

如果这不起作用,请确保在创建播放器夹具def时没有将0作为密度传递,因为运动摩擦计算为:friction=(friction coefficient)*(normal force)然后是没有质量的物体(密度= 0),在大多数情况下(你的“大多数情况”都包括在内),会产生 no 摩擦。