J'utilise Java / Slick 2D. J'essaie d'utiliser la souris pour faire tourner le sprite et les touches fléchées pour déplacer le sprite. Je peux faire tourner le sprite sans problème, mais je ne peux pas le faire bouger dans la direction où il est censé le faire. Lorsque je frappe "en avant", le sprite ne se déplace pas nécessairement vers la souris. En fait, il ne se déplacera vraiment que vers la gauche de l'écran. Je suis sûr qu'il doit y avoir un code standard pour cela, car de nombreux jeux utilisent ce style de mouvement. Quelqu'un peut-il m'aider avec ce que le trig est censé être? Merci
EDIT: Voici le code de rotation (qui fait autre chose de bizarre: /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);
Et le code du mouvement. Je ne peux que me déplacer vers la gauche de l'écran ...
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;
}