0

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

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

然后,当敌人与另一个敌人或玩家发生碰撞时,有时会改变方向(他向后滑动)或变得更慢或更快。我需要它始终具有相同的线性速度,如果这个敌人与玩家或另一个怪物相撞,不要停止,不要慢,不要快......相同的速度和方向。

任何人都可以帮助我吗?对不起我的英语。

4

2 回答 2

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

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

2) 要始终获得相同的 LinearVelocity,请将 Elasticity 设置为 1,然后在游戏循环中检查速度是否已更改,然后将其更改回所需的值。或者您可以使用“applyForce”,您可以在此处查看 applyForce 示例

PS你可以使用类似的东西.createFixtureDef(1.0f, 1.0f, 0.0f)

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

于 2012-10-22T05:15:22.937 回答
1

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

于 2012-10-22T13:11:15.200 回答