2015-01-22 3 views
3

저는 Java로 게임을 프로그래밍하고 있습니다. 정말 정말 초보자 인 것 같은 느낌이 들지만, 저의 삶에 대해 알아 내지 못합니다. 내가하려는 것은 마우스를 향한 객체의 회전을 설정하는 것입니다 (마우스를 향해 회전하는 방향으로 초기 푸시를받습니다). 회전이 제대로 작동하는 것처럼 보일 수 있지만 문제는 이동이 이상하고 꺼지는 것입니다. 나는 GIF가 그것을 가장 잘 설명한다고 생각한다 : enter image description here 그래, 무슨 일이 일어나고 있는지 모르겠다. 보시다시피 회전은 완벽하게 설정되어 있지만 객체가 움직이면 나쁜 일이 발생합니다. 그래서 나는 관련성이 있다고 믿는 운동 코드를 줄 것이다. 이 코드는,회전을 이용한 이상한 움직임

dSpeed *= defaultFriction; 
speed.x += (float)(dSpeed * Math.cos(rotation - 90)); 
speed.y += (float)(dSpeed * Math.sin(rotation - 90)); 

speed.x *= defaultFriction; 
speed.y *= defaultFriction; 

speed.x = Calculation.clamp(speed.x, -maxSpeed.x, maxSpeed.x); 
speed.y = Calculation.clamp(speed.y, -maxSpeed.y, maxSpeed.y); 

goalPos.x = pos.x + speed.x; 
goalPos.y = pos.y + speed.y; 

가 그럼 난 기본적으로 while 루프는 누군가가 나를 도울 수 있다면 goalPos이 를 (쉽게 충돌을 처리하기 위해) 사용하여 한 번에 개체 하나의 픽셀을 이동 않습니다 (1/60 초)마다 틱 업데이트됩니다 내가 정말로 붙어서 정말 고마워. 감사!

+2

나는 심오하게 잘 보지 못했지만, 점프하는 것은 당신이 죄/코사인에도를 전달하는 것처럼 보이지만 라디안을 취하는 것입니다. 그게 될 수 있을까요? – yshavit

+1

나는 밝혀졌다, 아 ... 도처에 라디안과도를 혼합했다 ... 고마워! 나는 그것을 고쳤다! :디 – TheBeocro

답변

1

rotation - 90Math.cosMath.sin으로 전달하는 중 문제가있는 것 같습니다. 그러나 Math.cosMath.sin은 라디안을 사용하므로 rotation 변수의 단위에 따라 rotation - Math.PI/2 또는 Math.toRadians(rotation - 90)을 사용해야합니다. Math.asin가, Math.acos, Math.atanMath.atan2 모든 라디안을 반환 할 것을

참고.