2009-04-21 72 views
1

我不知道如何實現良好的2D網格運動。這是很容易實現的單位,比如士兵的運動,但我不知道如何把車輛優雅的方式。動作要像在C & C紅色警報(不是3,因爲它是3D的,我想只是2D)。RTS車輛網格運動

編輯:我不問任何代碼,既沒有鏈接到尋路算法,因爲它們很容易找到。但網格運動不是。我不知道如何「準確」,從一個瓦移動到另一個,特別是與對角線移動(即使它是「長」的舉動比正交移動)。

回答

1

一個方式將是表達在每圈的網格單元的車輛的轉彎半徑,並使用布氏圓圈算法來遞增地將它們移動到下一個相鄰的網格單元在每個轉

1

4-part series通過埃裏克利珀應該幫助:

我知道你有沒有指定的C#,但總的算法,他提出的是合理的。

+0

呃,實際上我是用C#做的,但這不是尋路算法(我幾乎可以在網上找到任何地方)。這是關於運動本身。 – mnn 2009-04-21 18:39:12

2

注意,我在做這件事,但它應該工作的罰款。

給定一個源和目標座標,只需在兩點之間畫一條線,然後沿該線移動車輛即可。當車輛在更細粒度的圖形表面上移動時,可以確定單位「真正」處於哪個平方(例如,通過簡單的座標映射)。

如果一個單位在一個方格中很重要,那麼當單位「停止」時,它可以滑行到下一個方格,它可以完全容納它(即,如果它已經離開方格A,則它繼續移動到B即使車輛「停止」)。

計算兩點之間的航向以確定車輛的方向。

如果您的車輛只有8個方向,則可以將它們指向下一個增量方形目的地,而不是最終目的地。對於慢速行駛的車輛來說,這看起來不錯,但對於快速行駛的車輛來說會很有趣。

請參閱此line drawing algorithm以幫助計算平方。記住,當然,這和路徑尋找沒有任何關係。

+0

嗯,謝謝,最後一些更好的答案。我會看看這個。不過,我對什麼比(以現代3D RTS遊戲等)的行動自由簡單的放棄。 – mnn 2009-04-21 19:50:57