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;