gpt4 book ai didi

Java Libgdx - Box2d setTransform带有关节的多个物体

转载 作者:行者123 更新时间:2023-11-30 07:58:19 25 4
gpt4 key购买 nike

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

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

我决定只将一个 body 移动到该位置,由于关节的原因,其他 body 应该跟随。

我得到了一个奇怪的结果, body 开始滚动,移动到任何地方,一个真正奇怪的结果,这里有一些图像来解释:

enter image description here

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

注意:从 A 点到 B 点(移动),没有任何障碍物穿过该物体

最佳答案

来自 box2d setTransform() 引用:

Set the position of the body's origin and rotation. This breaks any contacts and wakes the other bodies. Manipulating a body's transform may cause non-physical behavior.

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

而不是考虑使用

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

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

请注意,setLinearVelocity 并不取决于您的重力

<小时/>

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

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

关于Java Libgdx - Box2d setTransform带有关节的多个物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32325666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com