2014-03-19 43 views
0

由於斷言失敗導致遊戲崩潰時,我收到以下日誌。由於聯繫人委託中斷言失敗導致遊戲崩潰

Assertion failed: (typeA == b2_dynamicBody || typeB ==b2_dynamicBody), function SolveTOI, file 
/SourceCache/PhysicsKit/PhysicsKit-6.5.4/PhysicsKit/Box2D/Dynamics/b2World.cpp, line 678. 

這種情況會間歇性地發生(大概是我玩遊戲的10倍)。我所能得到的只是Box2D引擎與場景物理世界中接觸檢測相關的一些不一致。但是我無法在代碼中找出問題的原因。

有人可以告訴我如何去找到這個問題的根源?

+0

assert表明兩個主體都不是動態的。請確保您不要將機構的動態屬性更改爲NO(使用位掩碼將它們排除在碰撞之外) – LearnCocos2D

+0

謝謝,Steffen!這正是問題所在。 – ZeMoon

+0

好的,寫了一個答案。 – LearnCocos2D

回答

1

斷言表明兩個主體都不是動態的。

確保您不要將body的動態屬性更改爲NO(使用位掩碼將它們排除在碰撞之外)。絕對不要在聯繫回調方法中這樣做,因爲它看起來像是在接觸衝突解決步驟中發生的這個斷言。看起來合乎邏輯的是,當兩個靜態物體中的一個剛開始動態時,它們只能接觸並試圖解決碰撞。

+0

聯繫人委託中的目標節點被設置爲dynamic = NO。當另一枚彈丸在此之後擊中目標時發生這種情況。接受你的答案。 – ZeMoon