Andengine - 始终保持与身体相同的速度

时间:2012-10-21 14:41:28

标签: android performance andengine

我正在开发一个游戏,你在屏幕中间(玩家)的侧面滚动,敌人从左或右连续出现。

我创建了一个敌人,以这种方式将Linearvelocity设置为右(或左): getBody.setLinearVelocity(v * this.getDireccion(),0);

然后,当敌人与另一个敌人或玩家发生碰撞时,有时会改变方向(他向后滑动)或变得更慢或更快。我需要总是拥有相同的LinearVelocity,如果这个敌人与玩家或其他怪物相撞,不要停下来,不要减速,不要快......同样的速度和方向。

任何人都可以帮我这个吗? 对不起我的英文。

2 个答案:

答案 0 :(得分:1)

FixtureDef FIXDEF = PhysicsFactory.createFixtureDef(final float pDensity, final float pElasticity, final float pFriction);

1)避免“改变方向”将摩擦力设为0。

2)要获得始终相同的LinearVelocity,将Elasticity设置为1,然后在游戏循环中,检查速度是否更改,而不是将其更改回所需。或者您可以使用“applyForce”,您可以看到an applyForce example here

P.S。您可以使用.createFixtureDef(1.0f, 1.0f, 0.0f)

之类的内容

我有类似的problem。我需要球弹回到相同的高度。我做了什么?我记得以前的速度。当球击中地面时(速度发生变化)。我设置了之前记忆的速度(但符号相反prevVel *(-1)),这是在弹跳之前。

答案 1 :(得分:1)

如何创建 ContactListener ,并使用 postSolve 回调方法重置您的体速。
碰撞后,Box2D会产生冲动以避免灯具重叠,这就是为什么你身体的速度会发生变化的原因。 Here是一个很好的教程描述碰撞,希望对此有所帮助。