martes, 20 de noviembre de 2012

Tutorial Sprite Animado AndEngine GLES 2.0

Empezamos creando un archivo .png que contenga el numero de imágenes para generar la animación.
Aquí teneís la imagen que voy a utilizar para el tutorial, que es un triangulo rotando.



Esta imagen contiene cuatro imágenes de 100x100 píxeles.
1.Lo primero es crear nuestro proyecto. Se crea como se explica en este tutorial.
2.Agregamos la imagen a la carpeta assets/gfx. Si no existen las creamos.
3.Definimos la anchura y altura de la cámara, así como un BuildableBitmapTextureAtlas y ITiledTextureRegion, dentro de nuestra clase.

private static final int CAMERA_WIDTH = 800;
private static final int CAMERA_HEIGHT = 480;
private BuildableBitmapTextureAtlas mBitmapTextureAtlas;
private ITiledTextureRegion mTrianguloTextureRegion;


4. En public EngineOptions onCreateEngineOptions() pegamos el siguiente código, que sirve para definir la cámara y las otras opciones de la vista.
public EngineOptions onCreateEngineOptions() {
final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
return new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera); }

5.Vamos a definir nuetros BuildableBitmapTextureAtlas y ITiledTextureRegion en public void onCreateResources(), con el siguiente código:
public void onCreateResources() {
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
this.mBitmapTextureAtlas = new BuildableBitmapTextureAtlas(this.getTextureManager(), 400, 400, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
this.mTrianguloTextureRegion = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(this.mBitmapTextureAtlas, this, "triangulo.png", 4, 1);


try {
this.mBitmapTextureAtlas.build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(0, 0, 1));
this.mBitmapTextureAtlas.load();
} catch (TextureAtlasBuilderException e) {
}

}


-El 4 marcado en rojo nos indica el numero de columnas de nuestra imagen y el 1 el numero de filas.
6. Por ultimo creamos nuestra escena y añadimos nuestro triangulo animado:
public Scene onCreateScene() {
this.mEngine.registerUpdateHandler(new FPSLogger());

final Scene scene = new Scene();
scene.setBackground(new Background(0.09804f, 0.6274f, 0.8784f));

final AnimatedSprite triangulo = new AnimatedSprite(300, 200, this.mTrianguloTextureRegion, this.getVertexBufferObjectManager());
scene.attachChild(triangulo);
triangulo.animate(100);
return scene;
}

El 100 dentro de animate indica el numero de milisegundos que tarda en cambiar de imagen.

Con esto ya tenemos creado nuestra imagen animada.

Un saludo.




4 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. He colocado todo el codigo con mi imagen (las imagenes estan ordenadas en vertical) y lo unico que se ve cuando abro el juego es un cuadrado negro

    ResponderEliminar
  3. El problema es que el tamaño del BuildableBitmapTextureAtlas sera pequeño. Prueba cambiando los 400 por un numero mayor al tamaño de tu imagen total y seguro que te funciona.
    Un saludo.

    ResponderEliminar
  4. Efectivamente también he seguido el tutorial y salía un cuadrado negro, pero cambie el BuildableBitmapTextureAtlas de 400 a 900 por 900 ya ha funcionado correctamente; aclaro que la foto de los triángulos al inicio del tutorial excede los 400 X 400.
    Gracias, amigo.

    ResponderEliminar