2019.4.23——Unity方面碰見的一個問題

最近開發一個遊戲時,有一個需求是:求兩個物體的z方向向量在三維座標下的夾角。

在實現過程中發現了一個問題;

假定這兩個物體的方向向量相同,則它們的夾角計算出來應該是0。代碼如下:

Vector3 t1 = new Vector3(Camera.main.transform.forward.x, 0.0f, Camera.main.transform.forward.z);
Vector3 t2 = new Vector3(target.transform.forward.x, 0.0f, target.transform.forward.z);
float dot = Vector3.Dot(t1, t2);

但是代碼運算後結果dot = 17.1.......,並非預想中的等於0。

此時,將t1、t2的值打印出來發現都是(0,0,1),並沒有什麼問題。隨後我直接給t1、t2賦值(0,0,1)去計算,這次結果又是0了。

兩次計算的數值相同,但結果完全不一樣。

最後,我將t1、t2向量單位化(值沒有變化)後再去計算,結果就正確了。

float dot = Vector3.Dot(t1.normalized, t2.normalized);//注意使用單位向量來計算

目前還沒找到具體是因爲什麼導致的這種差異。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章