Java / Slick 2D kullanıyorum. Sprite döndürmek için fareyi ve sprite taşımak için ok tuşlarını kullanmaya çalışıyorum. Sprite'ı problemsiz bir şekilde döndürebilirim, ancak olması gerektiği yönde hareket ettiremiyorum. "İleri" yi vurduğumda hareketli grafiğin fareye doğru hareket etmesi gerekmez. Aslında, gerçekten ekranın soluna doğru hareket edecektir. Birçok oyun bu hareket tarzını kullandığından, bunun için bazı standart kodlar olduğundan eminim. Trig'in ne olması gerektiği konusunda kimse bana yardım edebilir mi? Teşekkürler
EDIT: İşte dönüş kodu (başka bir şey garip yapan: /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);
Ve hareket kodu. Sadece ekranın soluna hareket edebilirim ...
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;
}