miércoles, 20 de marzo de 2013

Primeros test: Rutinas y colisiones

En el artículo anterior sobre los test, conseguí hacer que los enemigos aparecieran en pantalla y dispararan sin demasiada dificultad, así como añadí algunos detalles que si bien no añadían utilidad, si añadían vistosidad.

Llega el momento de ponerse serios y para ello primero empecé por implementar las rutinas de los enemigos.
Para esto utilizaría como se comentó anteriormente la librería Tween Engine la cual definiendo las coordenadas de origen y destino me permitiría definir facilmente sus rutinas pues esta librería permite además definir secuencias de rutinas por lo que se puede mover cuantas veces se quiera cada enemigo de cual forma se quiera.

Los resultados, aunque básicos, apuntaban a maneras:


Y ya que nos poníamos serios con las rutinas, vamos a más y empezaremos a implementar las colisiones con Box2D
Si no conocéis Box2D, os diré que es un motor de colisiones pensado especialmente para los cuerpos en 2 dimensiones, capaz de representar desde círculos y otras figuras simples a polígonos complejos sin dejarnos en ello el rendimiento del juego.

Normalmente y para ajustar lo mejor posible las colisiones se deberían realizar polígonos adecuados a cada nave, pero para empezar a testear las colisiones usaremos rectángulos sencillos y círculos.

Para implementar los cuerpos de Box2D lo más sencillo era, partiendo de lo que ya había, colocar los cuerpos en lugar los sprites actuales y luego copiar la posición de los cuerpos a los sprites para representarlos. Con esto se conseguirá mover los cuerpos junto con los sprites de una forma muy sencilla y efectiva.

El siguiente paso es definir los grupos de colisión a los que pertenece cada nave/disparo, para ello definimos los grupos:

  • Nave enemiga
  • Meteorito
  • Disparo enemigo
  • Disparo jugador
  • Nave jugador
Con esta definición de los grupos de colisión podremos diferenciar que contacta con qué, y para ello deberemos de implementar la clase: ContactListener que nos proporcionará la información de los 2 objetos en colisión y dato su grupo podremos marcar que entra en colisión y más tarde en el bucle de juego comprobar sus posiciones y actuar con los cuerpos de la forma decidida.

En mi test, al contactar dos objetos (a excepción del jugador) los objetos se borran, aqui video:


Y hasta aquí los test de rutinas y colisiones.

No hay comentarios:

Publicar un comentario