AndEngine – Kill Sprite después de X segundos?
Estoy haciendo un juego para Android usando AndEngine. Ahora mismo estoy tratando de averiguar cómo hacer explosión sprites aparecen en la escena y luego ser eliminado X segundos después. Aquí está mi clase de explosión:
public class Explosion extends Sprite { public Explosion(float pX, float pY, ITextureRegion pTextureRegion, VertexBufferObjectManager pVertexBufferObjectManager) { super(pX, pY, pTextureRegion, pVertexBufferObjectManager); } }
Ahora lo que quiero hacer a esta clase para hacerlo diferente de un objeto Sprite regular es para que aparezca, y luego ser destruido después de una cierta cantidad de tiempo. ¿Cómo puedo lograr esto usando el AndEngine?
- La línea de dibujo de OpenGL ES 2.0 basada en movimiento, Line comienza siempre en origen
- Cómo implementar gesto multitouch en android
- OpenGL en Android versus iOS: optimizaciones, y donde difieren
- EglSwapBuffers es errático / lento
- Solución para escribir el valor del búfer de profundidad / profundidad en OpenGL ES 2.0
EDIT: Si es posible sacar esto sin tener que crear una clase de Explosion personalizada extendiendo Sprite entonces preferiría hacerlo de esa manera ya que sería más limpio.
También tenga en cuenta que habrá múltiples explosiones en la pantalla a la vez que se crean en momentos diferentes, así que quiero que cada explosión tenga su propia esperanza de vida individual.
- Irrlicht android en opengl es 2.0 driver
- Aplicando textura a Cubo, textura diferente en cada cara de cubo
- ¿Por qué mi programa de shader openGL para puntos tiene anillos de artefactos?
- ¿Hay algún dispositivo Android con un tamaño de pantalla mayor que GL_MAX_TEXTURE_SIZE?
- Intermitentes marcos lentos en Android OpenGL ES 2.0
- ¿Cómo determinar si una subida de textura tuvo éxito en OpenGL ES 2?
- OpenGL ES 2.0 vs OpenGL 3 - Similitudes y diferencias
- ¿Hay alguna forma de comprobar si el dispositivo Android es compatible con openGL ES 2.0?
Hay varias técnicas que usted podría utilizar dependiendo de sus necesidades. Si la explosión se anima, yo sólo usaría un AnimatedSprite con un IAnimationListener para atrapar cuando la animación cambia los marcos y / o está terminado y luego eliminar el sprite de explosión.
O, usted podría utilizar un DelayModifier – yo uso uno de éstos para "disolver una roca"
O, usted podría utilizar casi cualquier otro modificador – como un modificador en movimiento como decir un QuadraticBezierCurveMoveModifier, o un Modifer como un AlphaModifier.
Independientemente del modificador utilizado, se adjunta un IEntityModifierListener () y en el onModifierFinished hacer su limpieza de la explosión.
El siguiente código utiliza esa técnica para "atenuar" una puntuación del tablero de juego
gemScore.registerEntityModifier(new AlphaModifier(2f, 1f, 0f, new IEntityModifierListener() { @Override public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) { // TODO Auto-generated method stub } @Override public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) { // TODO Auto-generated method stub runOnUpdateThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub board.detachChild(gemScore); } }); } }));
HTH
Aquí hay un ejemplo de la DelayModifier – misma estructura básica
mainScene.registerEntityModifier(new DelayModifier(3, new IEntityModifierListener() { @Override public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) { // TODO Auto-generated method stub } @Override public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) { // TODO Auto-generated method stub runOnUpdateThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub mainScene.detachChild(sign); } }); } }));
- Cómo probar el evento swipe / fling usando jUnit en Android testcase
- Problemas de compatibilidad de Android 4.0 con Canvas.clipPath