我一直在考慮pathfinding對於一款安卓遊戲,我正在爲最近幾天的熱身活動開始創作,並且有些東西我無法擺脫困境。在RTS遊戲中流暢的移動單位?
我知道,大多數遊戲使用A *尋路,爲此,你需要在遊戲世界中被簡化,如圖或電網。對於我的遊戲,我想象一個boolean[][]
會做的伎倆,true
如果它是一個單位可以移動的網格,false
,如果他們不能。
我想象的單位會通過給他們一個位置和一個半徑來「大量」,如果兩個單位足夠接近他們的distance < radius + radius
,他們將會分開,直到他們的半徑不再重疊。我無法環繞頭部的問題是:
想象一下3個單元a
,b
和c
。 a
和b
是盟友,c
是他們的敵人。 a
和b
正在向c
排隊,其中a
在b
之前。 a
在c
的範圍內時,停止移動,開始攻擊c
。
我該如何讓b
繞過a
這樣他才能進入射程?如果單位標記boolean
在grid
他們在false
靜止時,並使用A *尋路找到路徑b
以避開a
?也許還可以在a
的半徑內將網格中的點標記爲false
以將其質量包含在尋路中?還是有更好的方式來表示遊戲世界,所以單位可以找到彼此的方式?請記住,它適用於Android,內存非常有限。
我會喜歡它,如果單位的運動可以像傳奇聯盟中的小兵一樣行事,並且真的想知道真正的戰略遊戲引擎是如何做到的。它是一個二維數組,是一個我無法想到的用於控制單位運動的航點或第三個數據結構圖嗎?
在傳奇的聯盟中,它看起來像小隊沿着一系列路標移動,當他們進入目前目標路點的某個範圍內時,它們會朝下一個路標前進,但它們如何相互移動?星際爭霸2也有一些非常漂亮的流暢單位移動,尤其是當它們四處飛奔時的小狗。