2011-11-24 54 views
0

我在做,涉及動態地添加到舞臺(很多圈)粒子模擬。當這些圈子碰撞(實際上是影片剪輯)時,他們需要反彈(動力轉換)。我對物理沒有任何問題,但不知道如何有效檢查碰撞。它歸結爲能夠1)檢查一個粒子是否碰撞和2)獲取碰撞中涉及哪個其他粒子(物體)?命中測試Flash AS3

我理想地喜歡粒子能夠檢查他們自己的碰撞並調整他們自己的動量,而不僅僅是在每個幀上運行一些肉感的Render()函數。這怎麼能做到?

在此先感謝。

回答

2

爲了有效的碰撞檢測,你會希望使用一種叫做二叉樹。本質上,不是檢查每一個圓圈的每一個像素,而是檢查每一個圓圈的每一個像素,你首先檢查兩個圓圈是否觸摸是合理的。這是通過將地圖重複分爲四個部分來完成的。如果兩個圓圈甚至不在屏幕的同一象限內,它們將不會觸摸。

然而,實施是困難的,除非你刻意給自己一個挑戰,使用圖書館,這樣你就不會推倒重來。你可以使用物理引擎Box2D,或遊戲引擎Flixel。

+0

如果(object.x +寬度>其minX && object.x寬度 apscience

0

如果你關心速度和優化,我建議你去Box2D。有很多例子可以讓你開始做,而且你在做的事情其實很簡單。

+0

這就像如果打算使用圖書館的最佳選擇。 – James

+0

我向你們提示,不要像自己的物理行爲和碰撞檢測那樣複雜,要依靠已被大量開發人員使用,優化和調試的經過驗證的工作優化庫。此外,你可以在代碼中包含庫的來源,你不需要使用swc或任何東西。 – felipemaia

+0

如果我是根據合同等,我一定會做你的建議是什麼,不過,我只是想玩弄閃光燈(安裝了前兩天)等今天特意從第一原理做的事情 - 我不需要結果。 – James

0

如果您不想使用Box2D,仍然可以使用遞歸函數進行二進制搜索並將搜索重複劃分爲象限,直到您在數組的元素中發現碰撞,牛逼