Java / Slick 2D를 사용하고 있습니다. 마우스를 사용하여 스프라이트를 회전시키고 화살표 키를 사용하여 스프라이트를 이동하려고합니다. 스프라이트가 아무 문제없이 회전하도록 할 수는 있지만, 예상 방향으로 움직일 수는 없습니다. "앞으로"를 누르면 스프라이트가 마우스를 향해 움직일 필요는 없습니다. 실제로 화면의 왼쪽으로 만 움직입니다. 많은 게임이이 스타일의 모션을 사용하기 때문에 이에 대한 표준 코드가 있어야합니다. 누구든지 삼각법이 무엇인지 나를 도울 수 있습니까? 감사
편집 : 회전 코드는 다음과 같습니다 ( /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);
그리고 운동 코드. 화면 왼쪽으로 만 이동할 수 있습니다 ...
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;
}
추가 한 코드의 요점은 무엇입니까? 이것은 새로운 문제입니까? 새로운 문제라면 새로운 질문을여십시오. 스프라이트가 향하는 방향으로 움직이는 것과 관련된 정보로만이 질문을 업데이트하십시오.
—
MichaelHouse
아니요 문제를 일으킨 코드입니다. 아래의 의견을 참조하십시오. 누군가가 그것을 요구했다.
—
rphello101
sprite.movespeed를 계산하는 위치를 보지 못합니까?
—
AturSams
이동 속도는 일정합니다.이 경우에는 .3
—
rphello101로