簡體   English   中英

Libgdx / java表達式:m_type == b2_dynamicBody

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM