Saya menggunakan Java / Slick 2D. Saya mencoba menggunakan mouse untuk memutar sprite dan tombol panah untuk memindahkan sprite. Saya bisa membuat sprite berputar tanpa masalah, tapi saya tidak bisa membuatnya bergerak ke arah yang seharusnya. Ketika saya menekan "maju", sprite tidak selalu bergerak ke arah mouse. Sebenarnya, itu hanya akan bergerak ke kiri layar kok. Saya yakin harus ada beberapa kode standar untuk ini karena banyak permainan menggunakan gaya gerak ini. Adakah yang bisa membantu saya dengan apa yang seharusnya menjadi trigonometri? Terima kasih
EDIT: Ini adalah kode rotasi (yang melakukan sesuatu yang aneh: /programming/12610320/why-is-my-image-rotating-off-center )
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);
Dan kode pergerakannya. Saya hanya bisa bergerak ke kiri layar ...
double ang = sprite.angle;
Input input = gc.getInput();
if(input.isKeyDown(sprite.up)){
sprite.x += Math.cos(ang)*sprite.moveSpeed;
sprite.y += Math.sin(ang)*sprite.moveSpeed;
}if (input.isKeyDown(sprite.down)){
sprite.x += -1*Math.cos(ang*Math.PI/180)*sprite.moveSpeed;
sprite.y += -1*Math.sin(ang*Math.PI/180)*sprite.moveSpeed;
}if (input.isKeyDown(sprite.left)){
sprite.x -= Math.cos(ang*Math.PI/180)*sprite.moveSpeed;
sprite.y += Math.sin(ang*Math.PI/180)*sprite.moveSpeed;
}if (input.isKeyDown(sprite.right)){
sprite.x += Math.cos(ang*Math.PI/180)*sprite.moveSpeed;
sprite.y -= Math.sin(ang*Math.PI/180)*sprite.moveSpeed;
}