Java 将jbox2d角度转换为slick2d角度时出现问题

Java 将jbox2d角度转换为slick2d角度时出现问题,java,slick2d,jbox2d,radians,Java,Slick2d,Jbox2d,Radians,更新 Slick和JBox使用的弧度方向相反,这就是我遇到麻烦的原因 我正在使用JBox2D和Slick2D(根据标题)制作一个游戏。所以,因为我在网上找不到任何关于它的信息,我从头开始写了一堆代码来在它们之间进行转换。然而,似乎角度不同,尽管两份文件都说它们使用弧度 这是我的密码: //In the update function angle = (float) (angle % 2*Math.PI); mass = player.getMass(); position = player.ge

更新 Slick和JBox使用的弧度方向相反,这就是我遇到麻烦的原因

我正在使用JBox2D和Slick2D(根据标题)制作一个游戏。所以,因为我在网上找不到任何关于它的信息,我从头开始写了一堆代码来在它们之间进行转换。然而,似乎角度不同,尽管两份文件都说它们使用弧度

这是我的密码:

//In the update function
angle = (float) (angle % 2*Math.PI);
mass = player.getMass();
position = player.getPosition();

if(input.isKeyDown(inputLeft)){
    angle-=0.015f*turnBlocks.size()/mass;        //turning, pt1
} else if(input.isKeyDown(inputRight)){
    angle+=0.015f*turnBlocks.size()/mass;
}

player.setTransform(position, angle);           //turning, pt2

if(input.isKeyDown(inputForward)){
    float xv = (float)(0.25f * Math.sin(angle) * 
                      thrustBlocks.size() / mass);  //Converting angle to vector
    float yv = (float)(0.25f * Math.cos(angle) * 
                       thrustBlocks.size() / mass);
    Vec2 curVel = player.getLinearVelocity();
    xv = xv + curVel.x;
    yv = yv + curVel.y;
    player.setLinearVelocity(new Vec2(xv, yv));
}

//在渲染函数中
g、 setColor(颜色为灰色);
对于(int mass=0;mass
当我运行上面的代码(以及其他代码)时,我会让播放器块朝着它显示的方向移动。但是,Jbox2D中的冲突不同步。以下是我发现的模式:

1个单位=pi/4英寸光滑

平滑方向:

7_uuu_uuu0_uuuu1

六、二

五、四、三

Jbox方向:

5_uuuuuuuuuuuuuu3

二,六,

七、四、一


真的,我不知道发生了什么事。有人能帮忙吗?好的。事实证明,即使Slick的变换和JBox的角度都是弧度,它们的方向相反。因此,我使用.getWorldPosition而不是转换生成了下面的代码

        float localJBoxX = thrustBlocks.get(count)[0];
        float localJBoxY = thrustBlocks.get(count)[1];

        float[] localEndCoords = {localJBoxX+0.5f, localJBoxY+0.5f,
                                    localJBoxX-0.5f, localJBoxY+0.5f,
                                    localJBoxX-0.5f, localJBoxY-0.5f,
                                    localJBoxX+0.5f, localJBoxY-0.5f};

        float[] slickCoords = new float[localEndCoords.length];

        for(byte point = 0; point<localEndCoords.length/2; point++){

            Vec2 localPoint = new Vec2(localEndCoords[point*2], localEndCoords[point*2+1]);

            slickCoords[point*2] = (float)tr.toSlick(player.getWorldPoint(localPoint).x, player.getWorldPoint(localPoint).y)[0];
            slickCoords[point*2+1] = (float)tr.toSlick(player.getWorldPoint(localPoint).x, player.getWorldPoint(localPoint).y)[1];
        }

        Polygon box = new Polygon(slickCoords);
        g.fill(box.transform(new Transform()));  //as to return a shape
float localJBoxX=strustblocks.get(count)[0];
float localJBoxY=shorthblocks.get(count)[1];
float[]localEndCoords={localJBoxX+0.5f,localJBoxY+0.5f,
localJBoxX-0.5f,localJBoxY+0.5f,
localJBoxX-0.5f,localJBoxY-0.5f,
localJBoxX+0.5f,localJBoxY-0.5f};
float[]flickCoords=新的float[localEndCoords.length];
对于(字节点=0;点
        float localJBoxX = thrustBlocks.get(count)[0];
        float localJBoxY = thrustBlocks.get(count)[1];

        float[] localEndCoords = {localJBoxX+0.5f, localJBoxY+0.5f,
                                    localJBoxX-0.5f, localJBoxY+0.5f,
                                    localJBoxX-0.5f, localJBoxY-0.5f,
                                    localJBoxX+0.5f, localJBoxY-0.5f};

        float[] slickCoords = new float[localEndCoords.length];

        for(byte point = 0; point<localEndCoords.length/2; point++){

            Vec2 localPoint = new Vec2(localEndCoords[point*2], localEndCoords[point*2+1]);

            slickCoords[point*2] = (float)tr.toSlick(player.getWorldPoint(localPoint).x, player.getWorldPoint(localPoint).y)[0];
            slickCoords[point*2+1] = (float)tr.toSlick(player.getWorldPoint(localPoint).x, player.getWorldPoint(localPoint).y)[1];
        }

        Polygon box = new Polygon(slickCoords);
        g.fill(box.transform(new Transform()));  //as to return a shape