2014-06-16 37 views
1

我的問題有點抽象,爲了使它更清晰,我嘗試解釋它。只有當物體移動或計算不斷時才計算交點

比方說,我有5個不可移動的對象,並有靜態位置。 我的主對象,它不是靜態的,並且與其中一個對象相交,然後我想知道它並顯示對此的響應。所以我的結論是遍歷所有這些對象並計算它們的交集。但是如果我沒有這些對象中的5個呢。可以說我有100個。然後,將布爾值綁定到主對象的速度會更快,當對象移動時以及否則不會。只有在布爾值爲真時才計算交點?

我想到的另一個選項是不斷計算所有對象之間的距離,以及在測試交叉點之前距離較短時的距離。所以如果一個對象移開我只計算距離,但如果它靠近我必須計算距離的交點。

回答

2

通常我會對我的對象進行分層,以便對靜態(不移動)和動態(移動)進行不同的處理。

它確實取決於你想要誠實做什麼,但處理這個問題的最佳方法是構建所有碰撞幾何體的BSP,並使用它處理碰撞,而不是通過所有對象進行線性搜索。

您將通過使用布爾方法在主框架上保存處理時間,但老實說這不是一個永久的解決方案。

+0

+1提到BSP樹。這是使系統可擴展的關鍵。 – enhzflep