Cómo eliminar collide box2d cuerpos en AndEngine?
Estoy usando AndEngine para crear un juego con la extensión box2d. Quiero implementar una condición que cuando dos cuerpos chocan, deben ser removidos o respawned. Al principio intenté usar
if(sprite1.collidesWith(sprite2)) // remove the sprites
pero esto no parece ayudar porque los sprites están unidos a sus respectivos cuerpos. También intenté usar contactListener como sigue:
- Strange "stutter" en box2D en diferentes dispositivos Android
- Cómo dibujar TiledMap usando scene2d
- Fundamentos de Android, libgdx y box2d
- Cómo comprobar si un cuerpo casi ha dejado de moverse en libgdx + box2d
- JBox2d - world.getBodyList () entra en un bucle infinito
bodyA=getFixtureA().getBody(); bodyB=getFixtureB().getBody();
y luego más tarde
if(bodyA!=null && bodyB!=null) // remove the bodies
pero que se estrelló el juego. ¿Alguien sabe una mejor manera de hacerlo?
- Libgdx se bloquea en Android
- Velocidad decreciente en el mundo de box2d de gravedad cero
- Los cuerpos de movimiento rápido pierden la colisión a veces en Box2d, AndEngine
- ¿Cómo animar una explosión que sopla los cuerpos circundantes lejos?
- ¿Cuándo usar ShapeRenderer, Mesh + SpriteBatch, Box2D y Scene2D en Libgdx?
- Múltiples montajes en un cuerpo o múltiples cuerpos?
- Box2D rotar un objeto, ¿cómo?
- Cómo cambiar la posición de un cuerpo en movimiento - Box2D
Así que hay algunas cosas por ahí sobre la colisión, pero me tomó bastante tiempo para averiguar cómo eliminar los objetos basados en la colisión. Así que decidimos hacer un rápido tutorial para tratar de ayudar a otras personas. La clave es que en Box2D no se puede borrar el cuerpo en el controlador de colisiones y es necesario hacer algo para marcarlo para eliminarlo en la próxima actualización. (podría ser mejores maneras, pero esto funciona y se hace el trabajo)
Aquí está el enlace para un tutorial muy agradable.
Colisión y extracción de Box2D
Esto seguramente le ayudará a hacer su trabajo.
Gracias 🙂
Si la colisión de Sprite realmente ocurre, usted puede quitar los cuerpos también al mismo tiempo:
mPhysicsWorld.getPhysicsConnectorManager().findPhysicsConnectorByShape(pSprite);
- Configuración de la imagen ImageView mediante la ruta del archivo desde el almacenamiento externo
- ¿Cómo puedo hacer que la pestaña heap nativa de DDMS sea visible?