1

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

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

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

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

在此处输入图像描述

如何使用 setTransform 将多个连接有关节的物体移动到一个位置?

注意:从 A 点到 B 点,物体没有障碍物(移动)

4

1 回答 1

1

从 box2d setTransform() 参考:

设置body的原点和旋转的位置。这会中断任何联系并唤醒其他身体。操纵身体的变换可能会导致非物理行为。

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

而不是这个考虑使用

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

您可以将v计算为主体的终点和起点的减法。当它到达目标时,您应该处理停止体(通过将其速度归零)。

请注意setLinearVelocity不取决于你的重力


第二种解决方案就是对这个“联合组”中的所有实体设置转换。您可以迭代实体并根据它们的起始位置和目标向量移动它们

for(Body body : jointGroup)
{
    body.setTransform(body.getPosition.x - someX, ...)
    ...
于 2015-09-01T13:44:48.260 回答