gpt4 book ai didi

android - 破坏 body 时崩溃

转载 作者:搜寻专家 更新时间:2023-11-01 08:09:53 26 4
gpt4 key购买 nike

当我销毁一个由多个由关节连接的物体组成的物体时,我的应用程序崩溃了,没有出现错误。当然,我做了一些研究,发现当一个人在物理引擎计算一步时摧毁物体时会发生这种情况。所以我只是将尸体添加到列表中并在 onUpdate() 中销毁它们,但这没有帮助。有趣的是,即使在 onUpdate() 之外,销毁简单的物体也能像魅力一样工作,而且从未导致崩溃。

没有错误输出,只有一次我设法捕获一个说问题是 World.java 中的 NullPointerException 的第 507 行。令人惊讶的是,我在那里发现了以下内容:

public boolean isLocked()
{
return jniIsLocked( addr );
}

有人能告诉我这是怎么回事吗?我什至一次摧毁一具尸体:

if (!destroyList.isEmpty()){
Body b = destroyList.get(0);
destroyList.remove(0);
mPhysicsWorld.destroyBody(b);
}

问题仍然存在。

注意:我正在破坏的物体是由几个物体组成的,这些物体通过焊接接头连接到一个中央物体。物体重叠,所以我使用负 groupIndex 来防止它们相互碰撞。在移除特定物体之前移除与特定物体关联的所有关节无济于事。错误输出:

05-31 15:32:02.486: W/dalvikvm(927): JNI WARNING: JNI method called with exception raised
05-31 15:32:02.497: W/dalvikvm(927): in Lcom/badlogic/gdx/physics/box2d/World;.jniStep (JFII)V (CallBooleanMethodV)
05-31 15:32:02.497: W/dalvikvm(927): Pending exception is:
05-31 15:32:02.506: I/dalvikvm(927): Ljava/lang/NullPointerException;:
05-31 15:32:02.526: I/dalvikvm(927): at com.badlogic.gdx.physics.box2d.World.contactFilter(World.java:507)
05-31 15:32:02.526: I/dalvikvm(927): at com.badlogic.gdx.physics.box2d.World.jniStep(Native Method)
05-31 15:32:02.536: I/dalvikvm(927): at com.badlogic.gdx.physics.box2d.World.step(World.java:298)
...

最佳答案

我认为您还必须先移除物理连接器,并且必须在更新方法中执行所有这些操作。所以,删除顺序是1.去除 body 的关节2.移除物理连接器3.从世界上摧毁 body 以及我没有提到的其他必须手动管理的必要事项。

编辑:我为您找到了另一件事。您必须实现可运行的处理程序来破坏 body 和关节。以下代码对我有用,我看到了如何删除正文。

dRunnableHandler.postRunnable(new Runnable() {
@Override
public void run() {

// destroy the bullet body
PhysicsConnector physicsConnector = gameObject
.getPhysicsWorld().getPhysicsConnectorManager()
.findPhysicsConnectorByShape(Bullet.this);
gameObject.getPhysicsWorld().unregisterPhysicsConnector(
physicsConnector);

gameObject.getPhysicsWorld().destroyBody(bulletBody);
particleSystem.setParticlesSpawnEnabled(false);

gameObject.getEngine().getScene().detachChild(Bullet.this);

gameObject.removeBulletCounter++;
}
});

关于android - 破坏 body 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10835349/

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