[英]Libgdx/java Expression : m_type == b2_dynamicBody
我目前正在使用Box2d和Libgdx制作一個小游戲。 每個敵人都是box2d動態屍體,可以殺死,所以當他死后,我將屍體移開:
body.setUserData(null);
gameScreen.lightManager.world.destroyBody(body);
即使我殺死一個敵人,它也會對我的播放器起作用。 但是有時它會突然崩潰,並顯示以下錯誤異常:
Program: C:\Program Files\Java\jre1.8.0_71\bin\javaw.exe
File: /var/lib/jenkins/workspace/libgdx/extensions/gdx-box2d/gdx- box2d/jni/Box2D/Dynamics/b2Body.cpp, Line 299
Expression: m_type == b2_dynamicBody
知道為什么會崩潰嗎? 這個表達是什么意思? o
您必須確保在“世界”步驟中未從“世界”中刪除實體-當在應用程序的某個異步位置處理實體時,可能會發生這種情況。
如果您無法避免異步處理,最簡單的避免這種情況的方法是將一些UserData設置為Body,該UserData將標識要銷毀的物體並在world.step()
調用后直接銷毀它們-因此,代替remove()
body.setUserData("DESTROY");
然后在您的render
方法中
world.step(timestep, 3, 3);
for(Body b : world.getBodies())
if("DESTROY".equals(b.getUserData())
world.destroyBody(body);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.