保衛(wèi)蘿卜4保衛(wèi)蘿卜4:從攻擊范圍到算法邏輯
保衛(wèi)蘿卜4保衛(wèi)蘿卜4:從攻擊范圍到算法邏輯如下:
眾所周知,塔防游戲中的“塔”,是有攻擊范圍的。本文將使用保衛(wèi)蘿卜4中的火瓶子進(jìn)行模擬,分兩部分展示其底層算法邏輯。
?
↑ ↑ ↑ 火瓶子 ↑ ↑ ↑
------分割線------
Part1:對(duì)建筑物的攻擊范圍
1.算法分析:
鑒于建筑物為靜態(tài)存在,我們可以近似地使用Dijkstra算法來判定攻擊范圍。Dijkstra算法是從一個(gè)頂點(diǎn)到其余各頂點(diǎn)的最短路徑算法,解決的是有權(quán)圖中最短路徑問題,主要特點(diǎn)是從起始點(diǎn)開始,采用貪心算法的策略,每次遍歷到始點(diǎn)距離最近且未訪問過的頂點(diǎn)的鄰接節(jié)點(diǎn),直到擴(kuò)展到終點(diǎn)為止。
每一個(gè)地圖,可以看成一個(gè)已知大小的二維矩陣,只要確定了中心點(diǎn)(塔的位置),然后向上下左右四個(gè)方向展開搜索,規(guī)定中心點(diǎn)的數(shù)值為0,下一個(gè)格子的數(shù)值為本格子的數(shù)值加1。對(duì)于地圖上的每一個(gè)格子,算出到達(dá)這個(gè)格子的最短路徑,最終遍歷完所有的格子之后,獲得最短的路線。
2.實(shí)例演示:
↓ ↓ ↓ 一級(jí)火瓶子 ↓ ↓ ↓
↓ ↓ ↓ 二級(jí)火瓶子 ↓ ↓ ↓
↓ ↓ ↓ 三級(jí)火瓶子 ↓ ↓ ↓
3.建??偨Y(jié):
限定直線 y=0 和 y=x 在第一象限所圍成的區(qū)域(含邊界),各等級(jí)火瓶子有以下攻擊范圍。一級(jí)火瓶子:(1,0),(1,1),(2,0)。二級(jí)火瓶子:(1,0),(1,1),(2,0),(2,1)。三級(jí)火瓶子:(1,0),(1,1),(2,0),(2,1)。
Part2:對(duì)兔子的攻擊范圍
1.算法分析:
由于兔子會(huì)在路徑上勻速移動(dòng),我們可以使用碰撞檢測(cè)算法來判定攻擊范圍。碰撞檢測(cè)是建立在碰撞體上的,而碰撞體是對(duì)一個(gè)物體“邊界”的確切描述。它描述了每個(gè)需要進(jìn)行碰撞檢測(cè)的物體的邊界,并依靠數(shù)學(xué)方法判斷這些邊界是否相交,進(jìn)而產(chǎn)生碰撞檢測(cè)的結(jié)果。
兔子的碰撞體可近似看成一個(gè)圓(或者是一個(gè)圓角的正方形),火瓶子的攻擊范圍也是一個(gè)圓,恰好構(gòu)成了最簡(jiǎn)單的一類碰撞體——圓形碰撞體。根據(jù)初中數(shù)學(xué)的勾股定理,以及兩圓相交的判定定理,即可獲取其有效的攻擊范圍。
2.實(shí)例演示:
↓ ↓ ↓ 一級(jí)火瓶子 ↓ ↓ ↓
↓ ↓ ↓ 二級(jí)火瓶子 ↓ ↓ ↓
↓ ↓ ↓ 三級(jí)火瓶子 ↓ ↓ ↓
↓ ↓ ↓ 2D碰撞檢測(cè) ↓ ↓ ↓
↓ ↓ ↓ 巨呆兔和呆萌兔的對(duì)比 ↓ ↓ ↓
↓ ↓ ↓ 模型高度對(duì)比 ↓ ↓ ↓
3.建模總結(jié)
圓形碰撞體擁有最簡(jiǎn)單的計(jì)算過程,在運(yùn)動(dòng)速度夠快(或形狀夠圓)的情況下也不會(huì)有太大的違和感,所以這種碰撞體在彈幕游戲和塔防游戲中應(yīng)用廣泛。對(duì)于巨呆兔而言,它所在的路徑 并不在火瓶子的攻擊范圍內(nèi),但它的2D模型中心點(diǎn)卻在路徑上方,且其半徑比呆萌兔的模型半徑大,所以火瓶子完成了“不可能”做到的降維打擊,呆萌兔幸運(yùn)地逃過一劫(笑)。
------分割線------
如果有小伙伴對(duì)本文感到疑惑,或者想與樓主作進(jìn)一步的探討,歡迎在評(píng)論區(qū)留言哦~
以上就是保衛(wèi)蘿卜4保衛(wèi)蘿卜4:從攻擊范圍到算法邏輯相關(guān)內(nèi)容。
保衛(wèi)蘿卜4相關(guān)遊戲推薦
1.81GB
337MB
140MB
587MB
11.84MB
54.77MB
13.41MB
閩公網(wǎng)安備 35021102000359號(hào)
網(wǎng)絡(luò)文化經(jīng)營(yíng)許可證號(hào):閩網(wǎng)文(2016)4364-073號(hào)