我正在使用 Java/Slick 2D 来玩图形并使用鼠标来旋转图像。但是发生了一些奇怪的事情:图像不一定面向鼠标。它与法线呈 45 度角,但距离越远,距离越远。见下图(白色圆圈为鼠标,文字为角度):
这是我使用的轮换代码:
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){
mAng = Math.toDegrees(Math.atan2(mY - pY, mX - pX));
if(mAng==0 && mX<=pX)
mAng=180;
}
else{
if(mY>pY)
mAng=90;
else
mAng=270;
}
sprite.angle = mAng;
sprite.image.setRotation((float) mAng);
有什么想法吗?我假设它与图像坐标来自左上角的事实有关,但我不知道如何反驳它。仅供参考:屏幕 640x460,图像 128x128 并在窗口中居中。
编辑:不幸的是,那里没有真正起作用。这是一张包含更多信息的图片:
EDIT2:找到了答案!不得不改变: int px/py = sprite.x/y 到
int pX = sprite.x+sprite.image.getWidth()/2;
int pY = sprite.y+sprite.image.getHeight()/2;