Ich benutze Java / Slick 2D. Ich versuche, das Sprite mit der Maus zu drehen und mit den Pfeiltasten das Sprite zu bewegen. Ich kann das Sprite problemlos zum Drehen bringen, aber ich kann es nicht dazu bringen, sich in die Richtung zu bewegen, in die es soll. Wenn ich "vorwärts" drücke, bewegt sich das Sprite nicht unbedingt in Richtung Maus. Eigentlich bewegt es sich wirklich nur nach links auf dem Bildschirm. Ich bin mir sicher, dass es dafür einen Standardcode geben muss, da viele Spiele diesen Bewegungsstil verwenden. Kann mir jemand helfen, was der Trigger sein soll? Vielen Dank
BEARBEITEN: Hier ist der Rotationscode (der etwas anderes Seltsames bewirkt: /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);
Und der Bewegungscode. Ich kann mich nur nach links bewegen ...
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;
}