2
我正在尝试使用Java/Slick 2D处理图形。我试图让我的精灵旋转到屏幕上的任何位置,然后相应地移动。 我认为最好的方法是跟踪精灵所处的角度,因为我必须将角度的余弦/正弦乘以移动速度,以便让精灵变为“向前”如果是,例如面临45度在象限3。无法让精灵正确旋转?
但是,在我甚至担心这一点之前,我甚至无法让我的精灵首先旋转。 初步控制台测试显示此代码工作,但应用于精灵时,它只是抽动。任何人都知道什么是错的?
int mX = Mouse.getX();
int mY = HEIGHT - Mouse.getY();
int pX = sprite.x;
int pY = sprite.y;
int tempY, tempX;
double mAng, pAng = sprite.angle;
double angRotate = 0;
if (mX != pX) {
tempY = pY - mY;
tempX = mX - pX;
mAng = Math.toDegrees(Math.atan2(Math.abs((tempY)), Math.abs((tempX))));
if (mAng == 0 && mX <= pX)
mAng = 180;
}
else {
if (mY > pY)
mAng = 270;
else
mAng = 90;
}
// Calculations
if (mX < pX && mY < pY) { // If in Q2
mAng = 180 - mAng;
}
if (mX < pX && mY > pY) { // If in Q3
mAng = 180 + mAng;
}
if (mX > pX && mY > pY) { // If in Q4
mAng = 360 - mAng;
}
angRotate = mAng - pAng;
sprite.angle = mAng;
sprite.image.setRotation((float) angRotate);
谢谢!!我的印象是.setRotation()告诉精灵旋转多少,而不是以什么角度。这更有意义,并解释了为什么我尝试过的其他代码组合都不起作用。 – rphello101