2012-11-26 2 views
4

어떤 각도로 얼굴을 움직이고 싶습니다.이 경우는 탱크입니다. 그래서 내가하고 싶은 것은 이것입니다 :
W를 누르면 탱크가 앞으로 움직여야합니다.
A 또는 D를 누르면 각도가 회전합니다.각도 XNA로 앞쪽으로 이동 XA

지금까지 각도를 회전 할 수 있었지만 탱크를 앞으로 움직이는 방법을 모릅니다. 나는 그런 것들을 시도했다.

if (key.IsKeyDown(Keys.W)) 
{ 
    TankPos.Y = TankPos.Y - 4; 
} 

물론 각도에 상관없이 올라간다. 간단한 해결책? 최대

답변

4

, 당신은 또한에 델타를 곱해야 마지막 프레임 이후에 경과 된 시간. 당신이 당신의 탱크 속도에 사용하는 측정에 따라

var deltaX = Math.Sin(angleRad) * tankSpeed * gameTime.ElapsedGameTime.Milliseconds; 
var deltaY = -Math.Cos(angleRad) * tankSpeed * gameTime.ElapsedGameTime.Milliseconds; 

(밀리 초 또는 초.

2

0,0 가정하면 왼쪽 상단 0 도입니다입니다 : 대답 낭비 정교화, 당신은 고정 된 시간 단계 또는하지를 사용하는 경우에 따라

var deltaX = Math.Sin(angleRad) * distance; 
var deltaY = -Math.Cos(angleRad) * distance; 
0

은 카메라 나 탱크 당신은/d의 회전 있습니까? 당신은 탱크를 회전하는 경우 것 빠르게 카메라에서 빠져 나옵니다. 카메라를 회전하는 경우 카메라의 방향 벡터의 x 및 y 구성 요소를 사용하여 탱크가 움직이는 방향을 얻을 수 있습니다.