簡體   English   中英

在Box2d中刪除正文-C ++

[英]Deleting Body in Box2d - C++

我一直在嘗試到處解決此問題的解決方案,但無濟於事。 我還嘗試了許多不同的方法來嘗試自己解決此問題,但是沒有任何效果。

每當我嘗試從世界上刪除一個正文時,我在Box2d中的IsLocked方法上都會遇到讀取訪問沖突。

我嘗試創建矢量列表,然后從該列表中刪除世界上的所有物體。 刪除之前,請確保檢查自己沒有踩過這個世界,並且列表中沒有重復項,並且這個世界沒有鎖定。

我將它們添加到列表中,如下所示:

for (size_t i = 0; i < m_PlankObjects.size(); i++)
{
    m_Game->m_DestroyObjectList.push_back(m_PlankObjects[i].GetBody());
}

這是GetBody()方法:

b2Body * GameObject::GetBody()
{
    return m_Body;
}

m_Body的定義如下:

b2Body* m_Body;

然后像這樣銷毀:

if (m_UpdateWorld)
{
    World.Step(1 / 60.f, 8, 3);
}
else
{
    if (!World.IsLocked())
    {
        if (m_DestroyObjectList.size() != 0)
        {
            for (size_t i = 0; i < m_DestroyObjectList.size(); i++)
            {
                World.DestroyBody(m_DestroyObjectList[i]);
                m_DestroyObjectList.erase(m_DestroyObjectList.begin() + i);
            }
        }
    }
}

經過一夜的睡眠,我回到問題上進行調試。 我發現我沒有清除m_PlankObjects數組,因此在下一個游戲循環更新中將再次訪問它,但是由於沒有可訪問的主體,Box2d引發了異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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