jueves, 22 de noviembre de 2012

Tutorial AutoParallax Background AndEngine GLES 2.0

En este tutorial vamos a crear un fondo que se desplaza horizontalmente generando una sensación de movimiento del fondo.
1.Creamos un proyecto para andengine GLES 2.0. Este tutorial lo explica.
2.En la carpeta assets/gfx introducimos nuestra imagen o imagenes de fondo, ya que se puede hacer composición de imagenes para nuestro fondo, con distintas velocidades de movimiento. Este ejemplo solo tiene una.

Esta es la imagen que vamos a utilizar 800x480.

Solo voy a explicar la parte de codigo diferente al tutorial Sprite Background.
Aquí os pego el codigo:
public class BaseActivity extends SimpleBaseGameActivity {

private static final int CAMERA_WIDTH = 800;
private static final int CAMERA_HEIGHT = 480;


private BitmapTextureAtlas mAutoParallaxBackgroundTexture;
private ITextureRegion mParallaxFondo;

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);
}

@Override
public void onCreateResources() {
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
this.mAutoParallaxBackgroundTexture = new BitmapTextureAtlas(this.getTextureManager(),800, 480, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
this.mParallaxFondo = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxBackgroundTexture, this, "fondoAP.png", 0,0);
this.mAutoParallaxBackgroundTexture.load();


}

Lo único que cambia es onCreateScene():
public Scene onCreateScene() {
this.mEngine.registerUpdateHandler(new FPSLogger());

final Scene scene = new Scene();
final AutoParallaxBackground autoParallaxBackground = new AutoParallaxBackground(0,0,0,20);
final VertexBufferObjectManager vertexBufferObjectManager = this.getVertexBufferObjectManager();
autoParallaxBackground.attachParallaxEntity(new ParallaxEntity(5.0f, new Sprite(0, 0, this.mParallaxFondo, vertexBufferObjectManager)));
scene.setBackground(autoParallaxBackground);

return scene;
}

El numero 20 en rojo en AutoParallaxBackground(0,0,0,20) significa el numero de actualizaciones por segundo que hará nuestro fondo. Los otros tres 0 son para indicar colores que en nuestro caso no vamos a utilizar.
Y el 5.0f en rojo es el área que se actualizara cada intervalo de tiempo arriba indicado. Si es positivo se moverá hacia la derecha y si es negativo hacia la izquierda.
Eso es todo
Un Saludo.

3 comentarios:

  1. Excelentes tutoriales de andengine gles 2

    Es muy difícil encontrar este tipo de material en español

    ResponderEliminar
  2. Hola, he estado siguiendo tus tutoriales y me han sido de mucha utilidad, te comento que ahora estoy tratando de hacer un live wallpaper, y me gustaría que este pudiera desplace hacia los lados por acción del touch, como ocurre con una foto cualquiera cuando se le coloca de fondo de pantalla,
    Sería excelente si pudieras hacer un tutorial al respecto o en todo caso recomendarme alguna lectura que lograra ayudarme. Desde ya muchas gracias por todo lo hecho.

    ResponderEliminar
    Respuestas
    1. Siento no poder ayudarle, pero no llevo mucho tiempo utilizando Andengine y aun no me he puesto con los LiveWallpaper. Puede buscar en los foros de andengine a ver si le dan la solución. El enlace es http://www.andengine.org/forums/
      Un saludo.

      Eliminar