簡體   English   中英

自上而下的2D精靈與移動精靈的碰撞處理?

[英]Top down 2d sprite collision handling with moving sprites?

我正在使用xna 4.0在C#中制作一個簡單的自上而下的2d游戲,並且使用的是AABB碰撞檢測方法。 我絕對是編程的初學者,如果這個問題很基礎,我深表歉意。

我想讓多個敵人向玩家進攻以攻擊他,但是每添加一個以上敵人,我就很難管理所有人之間的碰撞和處理。 如何管理我正在使用的簡單矩形相交碰撞? 如果碰撞恢復為真,我嘗試將敵人設置到以前的位置,但是這樣做確實很時髦。

謝謝你的幫助!

處理多個倍數時,上一個職位通常無法發揮最佳效果,因為即使“上一個職位”也可能開始變得無效。

相反,您可以考慮按碰撞對象的方式推擠對象。

本文是基於OpenTK的,它不是基於XNA的,但非常相似,應該易於適應:

http://www.opentk.com/node/869

它需要最少的翻譯才能將AABB推開另一個AABB的方式。 必須分多次進行以確保沒有兩個對象發生碰撞。 但是,從技術上講,例如,如果您已經做過播放器,則無需檢查敵人與播放器。 相反,您可以使用一種遍歷所有需要比較的AABB並知道已比較哪些AABB的算法來更通用地處理此問題。 不過,這部分可以進入優化階段。

也要注意排序; 這是您控制碰撞優先級的地方。 當您的玩家的AABB與另一個玩家相撞時,您是希望玩家被“推”到第一個還是敵人? 這些細節可以由您自己決定。

為什么不使用自動處理碰撞(和其他物理學)的Farseer物理引擎? Farseer Physics Engine是具有真實物理響應的碰撞檢測系統。

Farseer可以處理所有碰撞,您可以專注於游戲設計! (不要重新發明輪子:)

這是一個開源項目,被廣泛使用! 那里有很多樣品

您可以從http://farseerphysics.codeplex.com/下載

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM