Unity3D中目標相對自身的前后左右方位判斷


http://blog.csdn.net/cen616899547/article/details/38336185

 

在做rpg類游戲的過程中,經常遇到要判斷周圍怪物相對自身的方位

 

1.判斷目標在自己的前后方位可以使用下面的方法:

   Vector3.Dot(transform.forward, target.position)

       返回值為正時,目標在自己的前方,反之在自己的后方

2.判斷目標在機子的左右方位可以使用下面的方法:

   Vector3.Cross(transform.forward, target.position).y

      返回值為正時,目標在自己的右方,反之在自己的左方

 

3.在這里順便解說下關於空間向量的點積和叉積:

A.點積 
  點積的計算方式為:  a·b=|a|·|b|cos<a,b>  其中|a|和|b|表示向量的模,<a,b>表示兩個向量的夾角。另外在 點積 中,<a,b>和<b,a> 夾角是不分順序的。 
  所以通過點積,我們其實是可以計算兩個向量的夾角的。 
  另外通過點積的計算我們可以簡單粗略的判斷當前物體是否朝向另外一個物體: 只需要計算當前物體的transform.forward向量與 otherObj.transform.position 的點積即可, 大於0則在前方,否則在后方。

B.叉積 
  叉積的定義: c =a x b  其中a,b,c均為向量。即兩個向量的叉積得到的還是向量!    性質1: c⊥a,c⊥b,即向量c垂直與向量a,b所在的平面 。    性質2: 模長|c|=|a||b|sin<a,b>    性質3: 滿足右手法則 。從這點我們有axb ≠ bxa,而axb = – bxa。所以我們可以使用叉積的正負值來判斷向量a,b的相對位置,即向量b是處於向量a的順時針方向還是逆時針方向


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM