向量在游戲AI中的應(yīng)用
責(zé)任編輯:3D數(shù)媒 時間:2013-01-11 21:23
[導(dǎo)讀]
向量在游戲中的應(yīng)用是不可或缺的,今天我要做的筆記就是向量點乘在游戲AI中的應(yīng)用。
在做3D游戲時,我們時常會想到當(dāng)敵人在我們前方時角色應(yīng)該做出什么反應(yīng),而當(dāng)角色在我們左方、右方或后方時我又該做出什么反應(yīng),這是游戲AI最基本的問題,想是容易,但是計算機(jī)就是計算機(jī)它需要我用程序去表達(dá),如果沒有想法會讓我們不知從何寫起。
這里我們首先需要理解向量的點乘:兩個向量相乘=兩個向量的模 * 兩個向量夾角的余弦值,理解這個之后我開始考慮我們需要解決的問題。
首先我們先計算出由自身與目標(biāo)點得出的向量(向量=終點 減去 起點(小啰嗦一下)),然后把得出的向量單位化,這樣一來,當(dāng)我們把這個得出方向向量 與我們自身的某一單位方向向量進(jìn)行點乘得出的結(jié)果不就是我們夾角的余弦值嗎?這時我們只要根據(jù)當(dāng)前所計算出得值便可確定出敵人現(xiàn)在在我們角色的什么方向了,樣例代碼:
Public Transform target; //敵人
Vector3 dir = (target.position - transform.position).normalized;
Float direction = vector3.Dot(dir,transform.forward) ;
If( direction > 0.9f)
{
Debug.log("敵人在前方");
}
Else
{
Debug.log("不知道");
}
dir = (target.position - transform.position).normalized;
direction = vector3.Dot(dir,transform.right) ;
If( direction > 0.3f)
{
Debug.log("敵人在右邊");
}
Else if(direction < -0.3f)
{
Debug.log("敵人在左邊");
}
Else
{
Debug.log("不知道");
}
……(剩下的一樣)
不過有時候我們會遇到這樣的問題,但角色和敵人被某些東東擋住了,我們是不可能發(fā)現(xiàn)敵人的啊,這是當(dāng)然的,在游戲中我想應(yīng)該常用的是通過發(fā)射射線來檢測,就是在自身的位置想敵人發(fā)射一條射線,檢測這條射線有沒有什么碰觸,有就說明他們之間是看不到的,我們應(yīng)該怎么樣,沒有就說明可能是看到的,因為這里還涉及到我們是否在敵人的視野范圍之內(nèi)。(發(fā)射物理射線是我很喜歡干的一件事,尤其是通過屏幕(也就是攝像機(jī))向三維場景發(fā)射射線來定位我們當(dāng)前點擊的位置然后做出相應(yīng)的反應(yīng),當(dāng)然正確的理解三維中的幾個空間關(guān)系更有助于我們處理這些空間的相互轉(zhuǎn)化(我現(xiàn)在都還沒理解透,因為我在計算機(jī)圖形學(xué)里沒遇到過像unity里面提到的一些空間,呵呵可能是自己學(xué)的還是太少了))
- 分享到:
- 有巨蟹座男朋友的女2017年06月21日
- 高校人才引進(jìn)看重“2016年08月23日
- 視覺設(shè)計該如何賦予2016年08月23日
- 如何創(chuàng)造設(shè)計經(jīng)典2016年08月23日
- MLikeasong答互聯(lián)網(wǎng)軟件2016年08月19日
- 工業(yè)設(shè)計創(chuàng)業(yè)的誤區(qū)2016年08月18日
- 2016年北京理工大學(xué)工2015年08月10日
- 中國一線城市近8成白2015年08月04日
- 2010宅男腐女們的杯洗2015年08月04日
- 深圳長途搬家公司包2013年03月22日
-
展柜3d模型專題 畫冊設(shè)計欣賞專題 中秋節(jié)創(chuàng)意禮品專題 動漫創(chuàng)意產(chǎn)品設(shè)計專題 布料貼圖_3d布料材質(zhì)貼圖專題 軟裝設(shè)計專題 創(chuàng)意字體設(shè)計專題 創(chuàng)意抱枕專題 筆筒設(shè)計專題 父親節(jié)禮物專題 3d筒燈模型專題 創(chuàng)意垃圾桶設(shè)計專題 皮革貼圖專題 3dmax軟件下載專題 椅子模型專題 男生生日禮物專題 創(chuàng)意廣告語專題 創(chuàng)意杯子設(shè)計專題 室內(nèi)設(shè)計專題 創(chuàng)意臺燈設(shè)計專題