gpt4 book ai didi

android andengine remove physics body crash 应用程序

转载 作者:行者123 更新时间:2023-11-29 17:57:31 24 4
gpt4 key购买 nike

我正在写一个游戏,在这个游戏中我必须在碰撞时移除一 block 长方形的砖 block 。错误发生在 *_physicsWorld.destroyBody(b);*

这是我的代码 fragment 和 logcat 输出(logcat 说 libc 中有错误):

代码:

public void destroyBrick(IShape s, Body b, int i){

PhysicsConnector facePhysicsConnector = _physicsWorld.getPhysicsConnectorManager().findPhysicsConnectorByShape(s);

_physicsWorld.unregisterPhysicsConnector(facePhysicsConnector);

_scene.unregisterTouchArea(s);

_scene.detachChild(s);

_physicsWorld.destroyBody(b);

System.gc();

}

逻辑猫:

***08-19 12:58:17.491: A/libc(29832): /home/denbi/src/android/AndEngineExtensions/AndEnginePhysicsBox2DExtensionNew/jni/Box2D/Dynamics/b2World.cpp:134: void b2World::DestroyBody(b2Body*): assertion "IsLocked() == false" failed
08-19 12:58:17.501: A/libc(29832): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 29852 (UpdateThread)***

请尽快帮我解决。谢谢

最佳答案

在执行 b2World::Step 期间,您不能移除物体。您必须存储要删除的主体列表,并在 Step 退出时实际删除它们。

示例(C++):

//in contact handling:
m_bodiesToRemove.push_back(my_body);

//after Step:
for (b2Body *b : m_bodiesToRemove):
m_world->DestroyBody(b);

关于android andengine remove physics body crash 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18310130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com