有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java Libgdx Box2d setTransform带关节的多个实体

我有一组身体,连接着一些关节(车轮关节、棱柱关节、旋转关节)

我试图用setTransform方法将这组身体移动到一个位置

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

我得到了一个奇怪的结果,尸体开始滚动,移动到任何地方,一个真正奇怪的结果,下面是一些图片来解释:

enter image description here

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

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


共 (1) 个答案

  1. # 1 楼答案

    从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.

    我认为问题在于你试图使用的移动身体的机制,而setTransform不是正确的方式

    而不是考虑使用

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

    你可以计算v作为身体终点和起点的减法。当物体到达目标时,你应该控制住它(通过将其速度归零)

    请注意,setLinearVelocity不依赖于重力


    第二个解决方案是将变换设置为该“关节组”中的所有机构。你可以在物体上迭代,并根据它们的起始位置和目标向量移动它们

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