Box2D远离行星旋转

时间:2015-12-15 15:32:03

标签: java rotation libgdx box2d

所以我试图让我的玩家身体旋转,但是当行星的下半部分旋转时,我会使用.setTransform()进行旋转。

if(insideRotation==Math.abs(playerRotation)){

        } else if(insideRotation<Math.abs(playerRotation)){
            insideRotation+=Math.PI/45;
        } else if (insideRotation>Math.abs(playerRotation)){
            insideRotation-=Math.PI/45;
}

Facing the wrong way

Facing the righ way

块上的线条显示它面对的方式,我希望底部图片背对绿色圆圈。

1 个答案:

答案 0 :(得分:0)

如果你想让一个身体总是远离行星中心你可以设置它的向量旋转是身体中心和行星中心之间的减法结果。

这就像是

    Body body, planet; //your 'character' and planet

    ...

    Vector2 bodyCenter = body.getWorldCenter();
    Vector2 planetCenter = planet.getWorldCenter(); //if you would use getPosition it would be related to the body's origin!

    Vector2 subVector = bodyCenter.sub( planetCenter );

    body.setTransform(x, y, subVector.angle() ); //it is possible that you will need to make '-angle()' here or something!

通过这种方式,无论身体在行星上的位置如何,你都将始终“固定在行星上”。