Anuncios

Bienvenidos sean a este post, en el post de hoy veremos como crear a la clase que se encargara de las fisicas de nuestro juego.

Anuncios

A diferencia de cuando trabajamos con un Game Engine ya sea Unity, Godot, Unreal, GameMaker Studio, etc, todos estos disponen de un conjunto de funciones o metodos que se encargan de manejar todo lo relacionado a las fisicas de sus elementos es decir gravedad, movimientos, impacto, etc, pero como estamos trabajando con un lenguaje que no esta pensado para juegos debemos crear a nuestra clase que se encargue de todo esto.

Anuncios

Para comenzar vamos a crear una nueva clase con los siguientes parametros:

  • Nombre: FisicasEngine
  • Tipo: Class
Anuncios

Una vez generada la clase procedamos a modificar el codigo creado automaticamente con el siguiente:

package org.example.invasores;

class FisicasEngine {
    boolean actualizar(long fps, SistemaParticula sp){

        if (sp.mEstaCorriendo)
            sp.actualizar(fps);

        return false;
    }
}
Anuncios

En este caso modificamos a la clase para convertirla en privada, luego agregaremos un metodo para actualizar nuestras proximas fisicas, recibira dos argumentos, uno para los fps y otro para el sistema de particulas, despues tendremos un condicional donde verifica si sp esta corriendo y en caso de ser verdadero procede a actualizarlo y por ultimo devuelve false, con esto por ahora completamos a nuestra clase ya que solamente la usaremos para la explosion del post anterior, nuestro siguiente paso sera modificar la clase GameEngine y para ello primero crearemos un objeto junto a la declaracion de los otros objetos:

FisicasEngine mFisicasEngine;
Anuncios

El siguiente paso sera definirlo dentro de nuestro constructor y para ello agregaremos la siguiente linea siempre detras de la linea super:

mFisicasEngine = new FisicasEngine();
Anuncios

Nuestro ultimo paso sera modificar el metodo run de esta clase para que llame al actualizar de la clase FisicasEngine, y para ello vamos a modificar el condicional donde verifica si el juego esta pausado:

            if (!mGameState.getPausado()){
                if(mFisicasEngine.actualizar(mFPS,mSistemaParticula))
                    desapareceReaparece();
            }
Anuncios

En este caso lo que hara es chequear si es verdad la actualizacion de las fisicas llama a desapareceReaparece, con esto ya podemos probar nuestro juego como se ve en el siguiente video

Anuncios

Ahora si tenemos una explosion como la gente pero todavia estamos lejos de todo lo necesario aunque esto nos abre las puertas al resto de los elementos que tendremos en nuestro juego.

Anuncios

Antes de finalizar recuerden eliminar o comentar el siguiente codigo del metodo onTouchEvent de la clase GameEngine:

        mSistemaParticula.emitirParticulas(
                new PointF(500,500));
Anuncios

Tambien pueden modificar los colores de la explosion para hacerla un poco mas homogenea, para ello deben cambiar este bloque en el metodo dibujar de la clase SistemaParticulas:

            pincel.setColor(Color.argb(255,
                    random.nextInt(256),
                    random.nextInt(256),
                    random.nextInt(256)));
Anuncios

De la siguiente forma:

            pincel.setColor(Color.argb(
                    255,255,255,255));
Anuncios

Esto hara que nuestra explosion se vea de color blanco como se ve a continuacion

Anuncios

Pero eso queda a criterio de cada uno, tambien pueden variar los colores dependiendo de los valores pasados, en mi caso lo voy a dejar multicolor.

Anuncios

En resumen, hoy hemos creado la clase que se encargara de las fisicas para nuestro juego, hemos hecho una pequeña implementacion para poder ver a nuestra explosion y observar como trabaja, espero les haya gustado sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00