在作rpg類遊戲的過程當中,常常遇到要判斷周圍怪物相對自身的方位spa
1.判斷目標在本身的先後方位可使用下面的方法:orm
Vector3.Dot(transform.forward, target.position)遊戲
返回值爲正時,目標在本身的前方,反之在本身的後方
get
2.判斷目標在機子的左右方位可使用下面的方法:it
Vector3.Cross(transform.forward, target.position).yio
返回值爲正時,目標在本身的右方,反之在本身的左方form
3.在這裏順便解說下關於空間向量的點積和叉積:transform
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的順時針方向仍是逆時針方向co