Java Libgdx - Box2d setTransform多个具有关节

时间:2015-09-01 07:14:39

标签: java libgdx box2d box2d-joints

我有一组身体,附有一些关节(轮关节,棱柱关节,旋转关节)

我尝试使用setTransform方法将该组身体移动到某个位置

我决定只将一个身体移动到该位置,而其他身体应该因为关节而跟随。

我得到一个奇怪的结果,身体开始滚动,移动到无处,一个真正奇怪的结果,这里有一些图像可以解释:

enter image description here

如何使用setTransform将附加关节的多个实体移动到某个位置?

注意:从A点到B点(移动)

,物体没有障碍物

1 个答案:

答案 0 :(得分:1)

从box2d setTransform()引用:

  

设置身体原点和旋转的位置。这会打破任何联系并唤醒其他身体。操纵身体的变形可能会导致非身体行为。

我认为问题只是你试图用来移动body的机制而且setTransform不是正确的方法。

而不是考虑使用

void com.badlogic.gdx.physics.box2d.Body.setLinearVelocity(Vector2 v)

你可以计算 v 作为身体终点和起点的减法。当它到达目标时,你应该处理停止身体(通过调整其速度)。

请注意 setLinearVelocity 不依赖于您的重力

第二个解决方案就是将setTransform设置为此“联合组”中的所有实体。您可以遍历实体并移动它们取决于它们的起始位置和目标矢量

for(Body body : jointGroup)
{
    body.setTransform(body.getPosition.x - someX, ...)
    ...