0

我正在使用Cocos2d編寫iOS遊戲。屏幕上有很多球(大約7000個物體)。太多的box2d對象讓我的遊戲變得緩慢

當觸摸屏幕時,球應該在該區域內爆炸,並且應該充滿周圍的球。

enter image description here

我創建了一個Box2D的對象爲他們每個人,並在物理世界中添加它。

問題如下。

  1. 首先,如果沒有觸摸事件,屏幕由7000個球填充,如果我們開始了物理,它們是相互重疊的,而且在屏幕上方的缺口。

enter image description here

  • 當觸摸屏幕,遊戲運行很慢。
  • 如何讓遊戲順利進行?

    +4

    7,000個球。每個球接觸6個其他球。這是42,000點的聯繫。每個人都有自己的力量,動力等......來計算。在60FPS下運行(你應該是這樣),你有16毫秒的時間來爲每一幀做所有事情。隨着其他東西的完成(繪圖等),它給你可能4或5毫秒的物理的東西。這是每個接觸點95納秒。無論你做什麼都不會發生。 – Fogmeister 2014-10-07 10:15:21

    回答

    4

    如何讓遊戲順利進行?

    減少球的數量。 7000物理啓用,碰撞機構是純粹的矯枉過正。即使700是很多。

    在任何情況下,都沒有快速解決這個問題。您可以嘗試減少box2d世界時間步中速度迭代的位置數量,並且不要使用碰撞回調方法(不要設置碰撞委託),但這就是它。

    +0

    那麼如何才能實現球流向下效應? – ttotto 2014-10-07 10:09:18

    +0

    非常寬泛的問題,但實際上它通常使用物理啓用的球來實現。然而,像我的水和飼料油在哪裏的遊戲使用的球數量少得多,自定義渲染器可以將多個球結合起來,看起來像是更大的流體splats,甚至可能是專門爲此任務而製作的定製物理。如果你已經看過PC上的技術演示,那麼爲了達到一半的體格幀速率,流體模擬(也是很多小球)完全在GPU(圖形卡)上運行。 – LearnCocos2D 2014-10-07 10:13:46

    +0

    您可能想嘗試降低速度和位置集成步驟,這是唯一可能有助於提高性能的方法。在任何情況下,避免實施碰撞回調,即使它們不運行任何代碼,調用它們的開銷也將在7000個球上顯示出來。 – LearnCocos2D 2014-10-07 10:16:09