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