Sto usando Java / Slick 2D. Sto cercando di usare il mouse per ruotare lo sprite e i tasti freccia per spostare lo sprite. Riesco a far ruotare lo sprite senza problemi, ma non riesco a farlo muovere nella direzione in cui dovrebbe. Quando premo "avanti", lo sprite non si sposta necessariamente verso il mouse. In realtà, si sposterà solo verso la sinistra dello schermo. Sono sicuro che ci deve essere un codice standard per questo poiché molti giochi usano questo stile di movimento. Qualcuno può darmi una mano con quello che dovrebbe essere il grilletto? Grazie
EDIT: ecco il codice di rotazione (che fa qualcos'altro di strano: /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);
E il codice del movimento. Posso solo spostarmi verso la sinistra dello schermo ...
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;
}