Unity3D中目標(biāo)相對自身的前后左右方位判斷

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

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

Vector3 forward = transform.TransformDirection(Vector3.forward);

Vector3 toOther = target.position - transform.position;

if (Vector3.Dot(forward, toOther) < 0)

print("The other transform is behind me!");

else

print("The other transform is forward me!");

返回值為正時,目標(biāo)在自己的前方,反之在自己的后方

2.判斷目標(biāo)在機(jī)子的左右方位可以使用下面的方法:

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

返回值為正時,目標(biāo)在自己的右方,反之在自己的左方

3.在這里順便解說下關(guān)于空間向量的點積和叉積:

A.點積

點積的計算方式為:a·b=|a|·|b|cos??其中|a|和|b|表示向量的模,表示兩個向量的夾角。另外在?點積?中,和 夾角是不分順序的。

所以通過點積,我們其實是可以計算兩個向量的夾角的。

另外通過點積的計算我們可以簡單粗略的判斷當(dāng)前物體是否朝向另外一個物體: 只需要計算當(dāng)前物體的transform.forward向量與 otherObj.transform.position 的點積即可, 大于0則在前方,否則在后方。

B.叉積

叉積的定義:?c =a x b??其中a,b,c均為向量。即兩個向量的叉積得到的還是向量!

性質(zhì)1:?c⊥a,c⊥b,即向量c垂直與向量a,b所在的平面?。

性質(zhì)2:?模長|c|=|a||b|sin

性質(zhì)3:?滿足右手法則?。從這點我們有axb ≠ bxa,而axb = – bxa。所以我們可以使用叉積的正負(fù)值來判斷向量a,b的相對位置,即向量b是處于向量a的順時針方向還是逆時針方向

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容