ОБНОВЛЕНИЕ Слайк и JBox используют радианы, которые идут в противоположных направлениях, поэтому у меня были проблемы.Устранение неполадок jbox2d angle to slick2d angle
Я делаю игру, используя 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));
}
и
//In the render function
g.setColor(Color.gray);
for(int mass = 0; mass < massBlocks.size(); mass++){
float boxx = (float)massBlocks.get(mass)[0];
float boxy = (float)massBlocks.get(mass)[1];
int[] slicklist = tr.toSlick(position.x+boxx, position.y+boxy);
boxx = (float)slicklist[0];
boxy = (float)slicklist[1];
float[] ps = {boxx-tr.xscale/2, boxy-tr.yscale/2,
boxx+tr.xscale/2, boxy-tr.yscale/2,
boxx+tr.xscale/2, boxy+tr.yscale/2,
boxx-tr.xscale/2, boxy+tr.yscale/2};
Polygon p = new Polygon(ps);
//turning, pt3
g.fill(p.transform(Transform.createRotateTransform(radAngle, slickx, slicky)));
}
Когда я запускаю приведенный выше код (с остальной частью его), я получаю блок игрока (ов) движется в направлении он показывает, что он сталкивается. Однако столкновение в Jbox2D не синхронизировано. Вот шаблон я нашел:
1 единица = пи/4 в пятно
Slick направлении:
7___0___1
6 ___.___ 2
5___4___3
Jbox Направление :
5___0___3
2 ___.___ 6
7___4___1
Действительно, я понятия не имею, что происходит. Может ли кто-нибудь помочь?