2011-12-31 95 views
4
- for (var bb1:b2Body= world.GetBodyList(); bb1; bb1 = bb1.GetNext()) 
    { 
    if (bb1.GetUserData() is Sprite) 
    { 
     world.DestroyBody(bb1); 
    } 
    } 
    world=null; 

是否正確刪除box2d中的b2body?不能摧毀身體(Box2d)

但我仍然看到舞臺上的物體。

回答

8

如果您嘗試在世界的Step()函數內部(例如在聯繫人偵聽器中)執行此操作,它將無法工作,因爲世界仍在處理屍體。你需要記下你想要摧毀的物體,然後在世界時間步驟結束後摧毀它們。

另外,我不確定你使用的是什麼語言,但是看起來有點奇怪,這個循環會破壞一個物體,然後在你剛剛銷燬的物體上調用GetNext()。

+0

ContactListener是我的情況 – damienix 2014-06-17 07:32:32

0

Box2D AS3端口有錯誤,連接着DestroyBody函數。 錯誤修復爲here(俄語)。

問題在聯絡池中。 而且您必須在之後刪除機構您的世界時間步已完成。