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