andengine删除像Sprites这样的可收集对象

时间:2012-11-25 15:24:26

标签: sprite andengine tmx

我正在开发一个使用andangine和tmx和body2d扩展的游戏。 我在创建地图时创建像硬币一样的特定位置的对象(精灵)。 我使用contactlistener检查玩家是否与硬币发生碰撞。

我该怎么删除这个精灵? 我怎样才能最好地组织我的精灵? 谢谢=)

2 个答案:

答案 0 :(得分:1)

我假设您创建了一个PhysicsConnector来连接您的精灵和身体。创建这些物理连接器的列表,当您决定删除一个实体(及其精灵)时,请执行以下操作:

Body bodyToRemove = //Get it from your contact listener
for(PhysicsConnector connector : mPhysicsConnectors) //mPhysicsConnectors is the list of your coins physics connectors.
    if(connector.getBody() == bodyToRemove)
        removeSpriteAndBody(connector); //This method should also delete the physics connector itself from the connectors list.

关于sprites组织:硬币是可重复使用的精灵,你不应该每次都重新创建它们。您可以使用对象池,here's关于此主题的问题。

答案 1 :(得分:0)

我建议您设置正文的用户数据。在您的碰撞处理程序中,您将能够使用它。小例子:

body.setUserData(...);

...

    public void postSolve(Contact contact, ContactImpulse impulse) {

            ... bodyAType = (...) bodyA.getUserData();
            ... bodyBType = (...) bodyB.getUserData();
            if (bodyAType != null && bodyBType != null) {
               if (bodyAType.getUserData.equals(...)) {
                   //.......do what you need
               }
            }
    }