五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Unity八叉樹及導(dǎo)航

2023-07-11 14:32 作者:莫末陌寞  | 我要投稿

樹的組織特點(diǎn):一種只有唯一的上級和若干下級的概念結(jié)構(gòu)。

對于八叉樹來說則是:只有唯一的上級和最多八個(gè)下級,而在本例中,下級節(jié)點(diǎn)的數(shù)量只會為0(null)或8。

聲明:

請確??赐炅艘曨l,我會直接講解我的改動(dòng)與添加。

0.有物體的區(qū)域,Draw的線框改色

1.物體位移重建線框(樹的數(shù)據(jù))

2.通過點(diǎn)的坐標(biāo)得到其所在的小區(qū)塊

3.導(dǎo)航

改色

在OctreeNode的DivideAndAdd方法中

這個(gè)if只有在遞歸的時(shí)候才會觸發(fā),因?yàn)槲覀儾惶赡茉O(shè)計(jì)根物體尺寸小于最小尺寸。

那么,進(jìn)入遞歸表明這個(gè)區(qū)域涉及到了物體,而走進(jìn)這個(gè)if表明這個(gè)區(qū)域已經(jīng)是預(yù)設(shè)的最小單位。

上面的if先檢測了子節(jié)點(diǎn)的區(qū)域是否涉及物體,然后再去遞歸,

上面return服務(wù)于,一個(gè)與物體Bounds相交并且尺寸小于minSize的子節(jié)點(diǎn)區(qū)域,使其不再產(chǎn)生子節(jié)點(diǎn),并且置紅顏色表示這個(gè)區(qū)域與物體相交。

重建線框

1) 在Octree類中,把構(gòu)造方法中建立數(shù)據(jù)組織的語句封裝給另一個(gè)函數(shù),為了更簡單的調(diào)用我把這個(gè)方法記錄在了一個(gè)UnityAction中。

2) 寫一個(gè)Mono腳本,當(dāng)檢測物體的變換發(fā)生改變時(shí),調(diào)用UnityAction。

定位點(diǎn)所在小區(qū)塊

1) 重新組織數(shù)據(jù)

將一個(gè)父區(qū)域切割為八個(gè)小區(qū)域,其所作的操作就是:

過立方體的中心,在其X、Y、Z軸做切線。

我直接舉實(shí)例:

先判斷點(diǎn)在大區(qū)域的中心的左右位置,能排除8個(gè)可能中的4個(gè),

在判斷點(diǎn)在大區(qū)域的中心的上下位置,能排除4個(gè)可能中的2個(gè),

最好判斷點(diǎn)在大區(qū)域的中心的前后位置,排除2個(gè)可能中的1個(gè)。

以此就從一個(gè)大區(qū)域中,得到了點(diǎn)所在的小區(qū)域。

2) 循環(huán)二分查找

這里強(qiáng)調(diào)一下八叉樹存在的意義,它每次產(chǎn)生子區(qū)域能更精準(zhǔn)的表示一個(gè)物體所占的區(qū)域,而對于不存在物體的區(qū)域不做細(xì)化。八叉樹所表示的方形區(qū)域一般不會被分割為n*n*n的大魔方。

我們要定位的目標(biāo)是層層推進(jìn)找到點(diǎn)所在的最小樹節(jié)點(diǎn),對于不存在物體的區(qū)域,這個(gè)節(jié)點(diǎn)會是根的子節(jié)點(diǎn);而區(qū)域存在物體的區(qū)域,這個(gè)節(jié)點(diǎn)的區(qū)域尺寸是規(guī)定的最小尺寸,層數(shù)由根節(jié)點(diǎn)所表示的區(qū)域決定(根的尺寸/2小于等于最小尺寸的次數(shù))。

導(dǎo)航就是隨便寫的了,通過物體判斷行進(jìn)方向上一點(diǎn)(物體pos+dir*minSize)是否處于有物體的區(qū)域,如果有,就進(jìn)行避障。

物體pos+dir*minSize中minSize是最小的區(qū)域尺寸,我們延伸檢測minSize就能有效檢測所有區(qū)域。(當(dāng)一幀的移動(dòng)大于一格不成立)。

Unity八叉樹及導(dǎo)航的評論 (共 條)

分享到微博請遵守國家法律
湘阴县| 页游| 武清区| 淮南市| 盘山县| 渑池县| 汉中市| 长沙县| 称多县| 冀州市| 瑞昌市| 东辽县| 马鞍山市| 涿鹿县| 阿巴嘎旗| 桓台县| 连城县| 交口县| 南皮县| 霍林郭勒市| 沙坪坝区| 潮州市| 商城县| 竹山县| 全州县| 和平县| 唐河县| 建始县| 石狮市| 呼图壁县| 长葛市| 万安县| 乐都县| 金阳县| 南乐县| 宜阳县| 平定县| 合水县| 饶平县| 灌南县| 枝江市|