Java 移除球体

Java 移除球体,java,java-3d,Java,Java 3d,我终于设法让我的程序检测到我在Java-3D中创建的两个球之间的碰撞;球员的球和敌人的球。现在的问题是,我不知道如何让球员的球在与敌人的球碰撞时被移除。我试过一些简单的东西,比如objTrans.removeChild(sphere)和objRoot.removeChild(objTrans)(objTrans是我的TransformGroup,objRoot是我的BranchGroup),在这两种情况下,我都会收到此错误消息 Exception in thread "AWT-EventQueu

我终于设法让我的程序检测到我在Java-3D中创建的两个球之间的碰撞;球员的球和敌人的球。现在的问题是,我不知道如何让球员的球在与敌人的球碰撞时被移除。我试过一些简单的东西,比如
objTrans.removeChild(sphere)
objRoot.removeChild(objTrans)(objTrans是我的TransformGroup,objRoot是我的BranchGroup),在这两种情况下,我都会收到此错误消息

Exception in thread "AWT-EventQueue-0" javax.media.j3d.RestrictedAccessException: Group: only a BranchGroup node may be removed
我还尝试了
objRoot.detach()但随后我收到错误消息:

Exception in thread "AWT-EventQueue-0" javax.media.j3d.CapabilityNotSetException: BranchGroup: no capability to detach

我不知道还有什么办法可以把球移走。请帮忙。

我在自己设计游戏时遇到了同样的问题。我发现最有效的解决方案是将可能被破坏的对象存储在一个列表中,我可以在必要时迭代并删除元素。

一个简单的代码示例。每次调用updateModel(),都会删除一个BranchGroup,然后用新形状更新它,然后再次添加

private BranchGroup             mapGroup = null;

public void updateModel (....)
{
    Shape3D                 shape;

    // Update 3D primitives
    if (mapGroup != null)                       // remove previous 3D model
        object.removeChild (mapGroup);      

    shape = facesTexturedShape (....);
    if (shape != null)                          // add new 3D model if non-null
    {
        mapGroup = new BranchGroup ();
        mapGroup.setCapability (BranchGroup.ALLOW_DETACH);
        mapGroup.addChild (shape);

        object.addChild (mapGroup);         
    }
}

在java-3d中如何使用球体?在创建列表之前,请确保使用的是BranchGroup对象。因为只有使用branch.detach()才能从实时场景中删除它们,所以在执行此操作时,我会收到一条错误消息,在线程“AWT-EventQueue-0”javax.media.j3d.CapabilityNotSetException:BranchGroup:无法分离