2011-09-18 7 views
0

3D 모델을 제어하고 싶습니다. 모든 방향으로 움직이지만이 방법은 모르겠습니다. 아무 생각 없니?XNA에서 3D 모델을 이동하는 방법?

+0

입력 키를 처리하여 모델의 x/y/z 위치를 변경하십시오. – thedaian

+0

왼쪽이나 오른쪽으로 돌리고 싶으면 어떻게 처리해야합니까? – beanhorstmann

+0

누구나 간단한 데모 게임을 만들고 우주선 (3D)을 그릴 수 있으며 키보드를 사용하여 제어 할 수 있습니다. 왼쪽 또는 오른쪽으로 돌리면 왼쪽이나 오른쪽으로, 위쪽으로 이동하려면 화살표로, 아래로 이동하려면 아래로 화살표를 움직입니다. 도와주세요! – beanhorstmann

답변

1

효과는 모델의 세계 변형을 제공하기 만하면됩니다. 당신의 업데이트 방법에서

Matrix World = Matrix.CreateWorld(position, forward, up); 

당신은 위치를 수정할 수 있습니다

LastPosition = Position; 

    if (IsKeyDonw(Left) Position -= Vector3.UnitX * Speed * ElapsedTime; ForwardDirty = true;  
    if (IsKeyDonw(Right) Position += Vector3.UnitX * Speed * ElapsedTime; ForwardDirty = true;  
    if (IsKeyDonw(Up) Position -= Vector3.UnitZ * Speed * ElapsedTime; ForwardDirty = true;  
    if (IsKeyDonw(Down) Position += Vector3.UnitZ * Speed * ElapsedTime; ForwardDirty = true;  


// the forward is the direction where will point your model. 

if (ForwardDirty) { 
    Forward = Position - LastPosition; 
    Forward.Normalize(); 
    ForwardDirty = false; 
} 

또한 앞으로 벡터의 움직임을 기반으로, 또는 현재에 마지막 기대를 보간 각도 변화를 원활하게 할 수 있습니다 ...

+0

+1 :'ForwardDirty' 플래그를 설정하고 버튼 누름의'if' 문 안에서'Forward Vector3'을 조정하는 것조차 신경 쓰지 않을 것입니다. –

관련 문제