3
发生碰撞时如何删除box2d实体?
我对Java和android编程还是很陌生,遇到碰撞时要移除对象有很多麻烦。我在网上四处张望,发现在碰撞检测(接触侦听器)期间,我绝不应该删除BOX2D主体,而应将对象添加到arraylist并在主体的“用户数据”部分中设置一个变量以删除或不删除并处理更新处理程序中的删除操作。因此,我这样做了:首先,我定义了两个ArrayList,一个用于面部,一个用于主体: ArrayList<Sprite> myFaces = new ArrayList<Sprite>(); ArrayList<Body> myBodies = new ArrayList<Body>(); 然后,当我创建一个面并将该面连接到其主体时,我将其添加到其ArrayList中,如下所示: face = new AnimatedSprite(pX, pY, pWidth, pHeight, this.mBoxFaceTextureRegion); Body BoxBody = PhysicsFactory.createBoxBody(mPhysicsWorld, face, BodyType.DynamicBody, objectFixtureDef); mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(face, BoxBody, true, true)); myFaces.add(face); myBodies.add(BoxBody); 现在,我在onloadscene中添加了一个联系人监听器和一个更新处理程序,如下所示: this.mPhysicsWorld.setContactListener(new ContactListener() { private AnimatedSprite face2; @Override public void beginContact(final Contact pContact) { } @Override …