[英]Getting a Box2D body created in C++ to collide with Box2D bodies in QML
[英]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.