[英]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可以處理所有碰撞,您可以專注於游戲設計! (不要重新發明輪子:)
這是一個開源項目,被廣泛使用! 那里有很多樣品
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.