国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

【A*算法】如何描述物體的形狀,坦克大戰(zhàn)BOSS尋路

2020-05-10 11:23 作者:GC_CH  | 我要投稿

? ? 比如說(shuō),在FC游戲 【坦克大戰(zhàn)】?想要加入一個(gè)超大的BOSS,如何給這個(gè)BOSS尋路呢?

????首先來(lái)看一下這個(gè)BOSS的特點(diǎn):它的體型比普通坦克大得多,占據(jù)了4個(gè)單元格。所以,我們不能把前一期的A*算法的代碼直接套在它身上,因?yàn)橹暗拇a默認(rèn)了物體的形狀就是占一個(gè)單元格。

????那么該如何調(diào)整代碼呢?

????很簡(jiǎn)單,將任何需要尋路的物體都成質(zhì)點(diǎn),只有在碰撞檢測(cè)時(shí)才需要用到物體的形狀信息

????所謂碰撞檢測(cè)就是,檢測(cè)物體在某個(gè)位置時(shí)是否會(huì)與障礙物發(fā)生碰撞。

形狀的表示

????首先說(shuō)明一下地圖坐標(biāo)系,以左上角那個(gè)單元格作為原點(diǎn),向右為x軸正方向,向下為y軸正方向。這個(gè)不是固定的,隨便取都可以,關(guān)鍵看你的愛好。

? ? 因?yàn)樯厦娴腂OSS坦克占據(jù)了四個(gè)單元格,所以,我們就可以用四個(gè)坐標(biāo)來(lái)表示它的形狀了。這四個(gè)坐標(biāo)是相對(duì)坐標(biāo),相對(duì)于物體的質(zhì)點(diǎn),因?yàn)槲矬w在尋路時(shí),當(dāng)前位置是會(huì)改變的,但是它的身體的各個(gè)點(diǎn)相對(duì)于質(zhì)點(diǎn)的坐標(biāo)卻是不變的。

物體的絕對(duì)絕對(duì)坐標(biāo)隨移動(dòng)而改變

???????

黑色的是質(zhì)點(diǎn)的絕對(duì)坐標(biāo),白色的是物體給點(diǎn)相對(duì)質(zhì)點(diǎn)的坐標(biāo)

????質(zhì)點(diǎn)可以隨便取,物體身上的點(diǎn),不是物體身上的點(diǎn)都可以,我們只是需要一個(gè)坐標(biāo)原點(diǎn)來(lái)描述物體的其他點(diǎn)而已。

????比如說(shuō),我們?nèi)∩蠄D中BOSS坦克的左上角單元格作為質(zhì)點(diǎn),則可以用 (0, 0), (1, 0), (0, 1), (1, 1)來(lái)表示該物體。

碰撞檢測(cè)

????知道了物體的形狀,那么需要使用它的形狀信息來(lái)修改原來(lái)的A*算法代碼。

????只需要修改一處就夠了,非常簡(jiǎn)單。

????下面這個(gè)函數(shù)是檢測(cè)某個(gè)點(diǎn)是否有效點(diǎn)的函數(shù),也就是判斷物體是否能移動(dòng)到該點(diǎn),能移動(dòng)的條件是該點(diǎn)在地圖內(nèi),且該點(diǎn)是可以通行的(值為0)。

? ???現(xiàn)在只需要利用物體的相對(duì)坐標(biāo)求出物體的所有點(diǎn)的絕對(duì)坐標(biāo),并判斷地圖上該點(diǎn)是否有效就行了。也就是,point是質(zhì)點(diǎn)的坐標(biāo),質(zhì)點(diǎn)坐標(biāo)加上形狀中各個(gè)相對(duì)坐標(biāo)就得到了物體上那點(diǎn)現(xiàn)在的絕對(duì)坐標(biāo)。

????只要物體上有一點(diǎn)發(fā)生了碰撞,則整個(gè)物體就不可以通過(guò)該區(qū)域。

????代碼調(diào)整如下:

for (形狀中的每個(gè)點(diǎn)p)

{

?????????????? 絕對(duì)坐標(biāo) p1 = p + 質(zhì)點(diǎn)坐標(biāo)point

????????????? ?if(valid(p1) == false)

????????????????????return false;

}

return true;



????????

????

【A*算法】如何描述物體的形狀,坦克大戰(zhàn)BOSS尋路的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
湘潭县| 河池市| 启东市| 曲周县| 修水县| 德令哈市| 车险| 泰来县| 宿州市| 武陟县| 云梦县| 洪江市| 三原县| 长汀县| 台前县| 惠水县| 湄潭县| 错那县| 陆丰市| 洞口县| 郸城县| 衡阳县| 六枝特区| 红原县| 景洪市| 江川县| 井研县| 宁乡县| 定远县| 沂南县| 丰县| 朝阳区| 洛隆县| 新田县| 临桂县| 南昌县| 泰和县| 襄汾县| 泸定县| 玉山县| 黔东|