我有一组身体,附有一些关节(轮关节,棱柱关节,旋转关节)
我正在尝试使用 setTransform 方法将该组主体移动到某个位置
我决定只将一个身体移动到该位置,其他身体应该因为关节而跟随。
我得到了一个奇怪的结果,身体开始滚动,移动到无处,一个真正奇怪的结果,这里有一些图像来解释:
如何使用 setTransform 将多个连接有关节的物体移动到一个位置?
注意:从 A 点到 B 点,物体没有障碍物(移动)
我有一组身体,附有一些关节(轮关节,棱柱关节,旋转关节)
我正在尝试使用 setTransform 方法将该组主体移动到某个位置
我决定只将一个身体移动到该位置,其他身体应该因为关节而跟随。
我得到了一个奇怪的结果,身体开始滚动,移动到无处,一个真正奇怪的结果,这里有一些图像来解释:
如何使用 setTransform 将多个连接有关节的物体移动到一个位置?
注意:从 A 点到 B 点,物体没有障碍物(移动)
从 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, ...)
...