2013-04-11 109 views
0

當使用Matrix.CreateTranslation(x,y,z)時,我得到了奇怪的結果。我已經使用固定值進行測試,每次一個變量和已經確定以下內容:XNA模型翻譯是bizzarre

  • 當改變X座標中,從左上角的模型移動到右下角。

  • 當改變Y座標時,模型會按照它的上下移動。

  • 我不打算改變Z座標,但由於我的程序的性質,我無法弄清楚它究竟做了什麼。

我有我的模型繪製。旋轉工作正常。我按照正確的順序執行翻譯(至少我認爲):scale * rotation * translation

我認爲問題在於我的相機設置,但我不知道問題是什麼。我正在嘗試創建一種自頂向下的RTS相機。

這裏是我的相機設置:

campos = new Vector3(5000.0F, 5000.0F, 5000.0F) 
effect.View = Matrix.CreateLookAt(campos, Vector3.Down, Vector3.Up) 

如需要,我可以提供更多的信息。

回答

1

Matrix.CreateLookAt的第二個參數不是相機正面對的方向,而是目標點。

如果試圖使相機往下看,用

Matrix.CreateLookAt(campos, campos + Vector3.Down, Vector3.Forward) 

這會告訴相機總是看一個單位的攝像頭下方的點。

您的翻譯可能無法正常工作,因爲相機沒有看到您想要的點,因此看起來像模型正在對角線移動。

+0

好的,以前當我試過這個模型時,根本不會顯示出來。自那以後,我已經解決了這個問題,但翻譯問題依然存在每增加一個勾號我都會在X的位置添加5,並且它會移動到屏幕的右下角。 – Ares513 2013-04-11 22:24:06