Programación de Juegos para Android

Programación de Juegos para Android 31: Box 2D y Scene 2D parte 1

42 videos

238 minutos

Fantástico, tenemos determinada la pantalla de Box2D, tenemos también la pantalla de Scene2D. Hagamos ahora la parte real, la del código que tenéis en la descripción de los vídeos, para lo que voy a juntar lo mejor de Box2D con lo mejor de Scene2D. Tendremos que hacer lo siguiente: primero crear el Stage, y después crear una simulación de Box2D para obtener los parámetros. Todo lo que habéis visto de Box2DDebugRenderer y OrthographicCamera, es una ilusión:

Box2D sólo sabe calcular parámetros. Tenemos que dejar que simule el mundo, obtener las propiedades, actualizarla, y dejar que los actores se muevan o se actualicen según lo que haya calculado Box2D. Es decir, con Box2D sabemos cómo calcular las cosas, pero Box2D no dibuja nada, ya que para eso tenemos Scene2D. Vamos a comenzar juntando Box2D con Scene2D, y lo voy a hacer en una nueva pantalla para no tenerlo tan sucio todo. Voy a mover la pantalla Scene2D al paquete Actor,

renombrarlo por si queréis visualizar su código. Renombrar el paquete actor por Scene2D, pero voy a trabajar de cero. De hecho voy a crear una clase llamada GameScreen para indicar que es la pantalla del juego principal. Evidentemente como no podía ser de otro modo es una BaseScreen, obvio. A partir de aquí podemos empezar a crear cosas. ¿Qué debemos crear? Necesito crear un Stage, para que sea la parte de Scene2D. Necesito crear un mundo, para que sea la parte de Box2D.

Hacemos el import, y ya le tengo. Defino un Stage. Defino un Mundo. [Teclado] Importo todo lo que haya que importar, y no nos olvidemos de hacer un dispose(), para lo que veremos cómo hacerlo con nuestro sistema de múltiples pantallas, porque por defecto no lo hace bien. Vamos a ver también cómo nos ocupamos de hacer el render, el cual voy a importar directamente desde Scene2D, básicamente. Lo copio y pego sin remordimiento, y con eso ya tengo mi Stage dibujando,

limpiando y todo eso. Ahora hago que mi MainGame cree una nueva pantalla de tipo GameScreen, y ahora debería poder visualizar una pantalla azul en la que no ocurra nada. ¿Veis? ¿Por qué no ocurre nada? Porque no hay actores agregados. Vamos a ver cómo hacer para agregar esos actores, así que en primer lugar voy a crear un paquete llamado Entity, y voy a crear mi primer actor, que va a ser… de hecho, a ver que vea como es este… bueno, sí, lo crearé de cero porque

como hay que integrar cosas de Box2D no pierdo nada y así lo explico mejor. Va a ser un PlayerEntity, de tipo Actor. El actor necesitará conocer su textura, porque de alguna forma tiene que dibujarse en Scene2D, pero también necesita el Mundo para poder asociarlo y eliminarlo, o hacer cualquier tipo de cálculo. El propio Body del propio player, la propia Fixture del propio player. Más variables que hemos visto previamente: cuándo está vivo, cuándo está saltando.

Con todo esto, ya estamos en disposición de crear el PlayerEntity. Le paso como parámetro un Mundo, luego una Textura, y una posición inicial, como pueda ser un Vector2 para indicar la posición inicial. Y ahora esto es más sencillo de lo que parece. Sólo queda guardar la instancia del mundo, la de la Textura, pero todo lo demás está ya hecho así que vamos a copiar y pegar como si no hubiese un mañana. Por ejemplo, la creación de la definición del cuerpo,

fue fácil. Ya vimos que funcionaba. Esto está mal escrito, ahora que lo veo. Lo que cambia es que en vez de instanciarlo en una posición fija la tomo del parámetro, pero ya está. Con esto ya tenemos el Body creado. Y lo mismo con la Fixture. La pillo por aquí, la copio, y la pego. No es que estemos programando en plan copia y pega, pero como esto ya está hecho y funciona, todo lo que tengo que hacer es adaptarlo. Si acaso renombro esta variable. Recordad lo del tamaño: 1 metro.

Con todo esto estamos listos para dibujarlo por pantalla, y así os cuento un problema que nos vamos a encontrar.

Si quieres enterarte de los nuevos cursos, suscríbete. No habrá spam, prometido :)

Sobre el autor

foto de jotajotavm
José Javier Villena

jotajota pa los amigos y jota pa los de más cnfianza.

Bio Seria: Analista-Programador en diferentes lenguajes. Tutor PREMIUM de reconocidas plataformas de nivel mundial como CodigoFacilito. Redactor de artículos para Cristalab. Mi canal de YouTube está patrocinado por la editorial ANAYA y LaTostadora. Me gusta explicar con detalle y poner varios ejemplos para que no queden dudas.

Bio Molona: Me presento :) soy informatico, ni frostis d hardware pero muy muxo de programacion, friki a medias o del to segun el dia. Me gusta programar, muxo. Manejo varios lenguajes y tdo lo ke sepa lo comparto x amor al arte. Este no es mi trabjo pero lo ago mejor y con +ganas y calidad que si lo fuera, x eso mismo, xq para mi es divertido. Solo spero al menos algo de agradecimientO!! ;)

Dios, qe gusto haber escrito este parrafo cm me a dao la gana sin pensar en ortografia ni tildes ni historias!!!!!