2013-12-11 41 views
0

我在我的遊戲中有一個NPC跟隨着他們在遊戲中隨機移動的腳本。我希望他們能夠面對他們正在移動的方向。向npc申請方向XNA

for (int i = 0; i < GameConstants.NumDaleks; i++) 
{ 
    if (dalekList[i].isActive) 
    { 
     Vector3 line = dalekList[i].direction; 
     float rotationDal = (float)(Math.Atan2(dalekList[i].position.Y, dalekList[i].position.X)/(2 * Math.PI)); 

     Matrix dalekTransform = Matrix.CreateScale(GameConstants.DalekScalar) * Matrix.CreateRotationY(rotationDal) * Matrix.CreateTranslation(dalekList[i].position); 
     DrawModel(mdlDalek, dalekTransform, mdDalekTransforms); 
    } 
} 

我敢肯定,這一定有什麼做rotationDal,我試圖改變計算和人物似乎旋轉不同,只是沒有在他們目前的方向

回答

0

XNA有一個內置的函數,你可能會在這裏找到方便。

Matrix.CreateWorld(positionVector, DirectionVector, UpVector); 

這裏的DOC:http://msdn.microsoft.com/en-us/library/bb975261(v=xnagamestudio.40).aspx

你的情況:

for (int i = 0; i < GameConstants.NumDaleks; i++) 
{ 
    if (dalekList[i].isActive) 
    { 
     Matrix dalekTransform = Matrix.CreateScale(GameConstants.DalekScalar) * Matrix.CreateWorld(dalekList[i].position, dalekList[i].direction, Vector3.Up); 
     DrawModel(mdlDalek, dalekTransform, mdDalekTransforms); 
    } 
}