ฉันใช้ Java / Slick 2D ฉันพยายามใช้เมาส์เพื่อหมุนสไปรต์และปุ่มลูกศรเพื่อย้ายสไปรต์ ฉันสามารถทำให้เทพดาหมุนได้โดยไม่มีปัญหา แต่ฉันไม่สามารถขยับไปในทิศทางที่ควรจะเป็นได้ เมื่อฉันกด "ส่งต่อ" สไปรท์ไม่จำเป็นต้องเลื่อนไปทางเมาส์ จริงๆแล้วมันจะเคลื่อนไปทางซ้ายของหน้าจอจริงๆเท่านั้น ฉันแน่ใจว่าต้องมีรหัสมาตรฐานสำหรับเกมนี้เนื่องจากเกมหลายเกมใช้รูปแบบการเคลื่อนไหวนี้ ทุกคนสามารถช่วยฉันด้วยสิ่งที่ตรีโกณมิติควรจะเป็น ขอบคุณ
แก้ไข: นี่คือรหัสการหมุน (ซึ่งทำอย่างอื่นแปลก ๆ : /programming/12610320/why-is-my-im-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);
และรหัสการเคลื่อนไหว ฉันสามารถเลื่อนไปทางซ้ายของหน้าจอ ...
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;
}