jueves, 22 de noviembre de 2012

Tutorial Vertical AutoParallax Background AndEngine GLES 2.0

Se realiza muy parecido al tutorial anterior. El problema es que Andengine solo tiene para AutoParallax horizontal, pero he creado dos clases nuevas que pegándolas en nuestro proyecto  AndEngine, que tenemos como librería nos permitirá hacerlo. Las clases las descargáis de mi pagina en GitHub y las pegáis en AndEngine/src/org.andengine.entity.scene.background. En vuestro proyecto cambiar AutoParallaxBackground  por VerticalAutoParallaxBackground y ya se moverá verticalmente.
Aquí os pego el código del ejemplo anterior modificado para que se mueva verticalmente.

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.

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;

miércoles, 14 de noviembre de 2012

Reinicio del Juego al bloquearse la pantalla AndEngine

La solución ha este problema es muy fácil, solo tenemos que introducir en Android Manifiest en la parte de la actividad que hemos creado lo siguiente:
android:configChanges="keyboardHidden|orientation"
Y con esto solucionamos el problema.
Aquí un ejemplo de Android Manifiest completo:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="borja.prueba"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".BaseActivity" 
            android:configChanges="keyboardHidden|orientation">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


martes, 2 de octubre de 2012

TimeHandler Andengine GLES 2.0.

En este tutorial vengo ha contaros como se utiliza TimeHandler de Andengine. Se trata de la repetición de un    método o código cada cierto tiempo. Es bastante sencillo ya se solo tiene una variable, que es cada cuanto tiempo en segundos se repite dicho código. Aquí tenéis el ejemplo de código:


private void metodo(){
       TimerHandler timeHandler;
       float tiempo = 1f;
       timeHandler = new TimerHandler(tiempo,true,new ITimerCallback(){
       public void onTimePassed(TimerHandler pTimerHandler) {
              codigo que queremos ejecutar cada cierto tiempo.
       }
       });
       
       getEngine().registerUpdateHandler(timeHandler);
}

La variable float tiempo es el intervalo de repetición de el código que queremos que se ejecute.
Bueno esto es todo.
Un saludo.

viernes, 3 de agosto de 2012

Tutorial Sprite Background AndEngine GLES 2.0

Colocar un Sprite de fondo se hace de la misma manera que colocar un Sprite en la pantalla. Casi todos los pasos son iguales al tutorial anterior si os dejo pegado el código y solo explico lo que es diferente.

  1. public class Main extends SimpleBaseGameActivity {
  2. private static final int CAMERA_WIDTH = 800;
  3. private static final int CAMERA_HEIGHT = 480;
  4. private ITextureRegion mFondoTextureRegion;
  5. private BitmapTextureAtlas mFondoTextureAtlas;
  6. public EngineOptions onCreateEngineOptions() {
  7. final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
  8. return new EngineOptions(true, ScreenOrientation.LANDSCAPE_SENSOR, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera);
  9. }
  10. public void onCreateResources() {
  11. BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
  12. this.mFondoTextureAtlas = new BitmapTextureAtlas(this.getTextureManager(), 1500, 1500);
  13. this.mFondoTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mFondoTextureAtlas, this, "fondo.png", 0, 0);
  14. this.mFondoTextureAtlas.load();
  15. }

Tutorial Sprite AndEngine GLES2

Lo primero que tenemos que hacer es configurar AndEngine GLES 2.0. Los pasos para ello los tenéis en el tutorial anterior. Tras esto creamos una carpeta en nuestro proyecto denominada assets y dentro de ella otra llamada gfx, e introducimos ahí nuestra imagen a cargar.
Ahora creamos tres variables. Una sera un BitmapTexture que es el lienzo donde introducimos nuestros sprites, otra sera una ITextureRegion y otro un objeto Sprite.
  1. private ITextureRegion mEnemigoTextureRegion;
  2. private BitmapTextureAtlas mBitmapTextureAtlas;
  3. public Sprite enemigo;
Ahora definiremos la camara en onCreateEngineOptions().


  1. final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
  2. return new EngineOptions(true, ScreenOrientation.LANDSCAPE_SENSOR, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera);


En esta parte podemos definir antes las variables CAMERA_WIDTH y  CAMERA_HEIGHT antes, o introducir los datos directamenta en la función. Yo las he definido antes.


  1. private static final int CAMERA_WIDTH = 800;
  2. private static final int CAMERA_HEIGHT = 480;