viernes, 16 de enero de 2015

OpenFL y Sprites (Arkanoid Parte 4)



En la entrega anterior vimos un rudimentario sistema para la detección de bordes. OpenFL nos brinda algunas herramientas que hacen esta tarea un poco más sencilla. Veamos cómo se comporta la bolita al colisionar contra nuestra plataforma:





Tenemos a nuestra disposición el método hitTestObject.

Sencillo de utilizar, simplemente comparamos un objeto con otro y si existe una colisión entre ellos devuelve verdadero.

Cabe aclarar, que este método es una herencia dierecta de AS3. Si bien se van implementando día a día nuevas funciones para que sean compatibles con otros lenguajes, es muy probable que solo funcione en Flash.


Para el caso de la plataforma colisionando con la bola, el código sería más o menos así:




Primero, verificamos que haya una colisión entre ambos objetos. Ello hará que la trayectoria de la bola cambie de positivo (para abajo) a negativo, pero en el mismo sentido (de ahí la multiplicación con -1).

Luego tenemos que, si la bolita colisiónó con la parte izquierda de la plataforma..cambie su orientación un poco más hacia ese lado, caso contrario, hacia la derecha.

 Por último tenemos la colisión de la bolita con los ladrillos.

En este caso, al tener una arreglo de Matriz, debemos comparar la ubicación actual con todas las posiciones conocidas de ladrillos que integran la Pared.







Muy sencillo de hacer con el bucle for como se muestra. Luego simplemente comparamos si la colisión vino desde la izquierda, derecha, arriba, etc.

Por último, el objeto impactado es removido.

Hasta aquí tenemos el juego funcionando correctamente como es de esperarse. Se ve bien (en mi opinión), pero puede mejorarse y mucho.



En la próxima y última entrega de la serie le agregamos algunas cosas más que harán del ejemplo algo un poco más profesional :P

  
Enlace a los fuentes en GitHub