2012-12-22 19 views
1

對於一些研究目的,我已經建立了一個小型坦克遊戲,你有一個坦克由一名玩家和一個或多個NPC坦克控制。全國人大常委會AI構建無柵格障礙地圖

現在我想讓這些NPC坦克通過他們不知道的領域進行導航。如果他們在一定範圍內,他們可以檢測到障礙物。如果他們檢測到這些障礙,他們應該將它們保存在易於查詢的特定數據結構中。所以他們可以在移動時考慮到他們。如果我的領域將是一個網格,這對我來說很容易,我只會保存哪些瓦片/節點是障礙物。

但是我並沒有真正使用網格,我的坦克根據它們的速度向前移動了幾個像素,因此坦克可以位於任何像素組合以及障礙物上。

現在我該如何處理?碰撞檢測超出了範圍。 我被迫使用某種網格或航點嗎?

+0

屏幕像素*做*形成網格。爲什麼不使用它? – goncalopp

+0

這使得網格太大。尋路幾乎是不可能的。 – Anonymous

+0

除非你有非常小的路徑,你可以縮小網格,結果將是準確的,不是? – goncalopp

回答

3

爲什麼不使用navigation mesh解決方案?看起來就像你正在尋找的一種方法,用於表示具有任意多邊形障礙物的ai導航的域。

github目前處於關閉狀態,但根據this website(這是值得檢查的,這是一個有趣的Java實現),this project有一個python導航網格實現。

編輯

根據您在下面的意見,我認爲這是a hierarchical representation實際上更接近你正在尋找的答案。本文鏈接到一篇論文,該論文描述如何將逐像素網格(具有任意形狀的障礙物)抽象成節點邊緣圖形,以提高導航計算的速度。通過將這種類型的分層表示與動態導航算法(如d *)結合使用(請參閱this answer以獲取動態導航算法的概述),您應該能夠爲您的問題實施解決方案。

+0

但是這樣的導航網格必須在遊戲開始之前定義,這樣AI不能真正發現地圖。或者我錯了? – Anonymous

+0

這是一個很好的觀點。導航網格必須預先計算。 – brentlance

+0

我已經更新了答案。希望它更有幫助。 – brentlance