Chuck's Academy

HTML5 Canvas

Detección de Colisiones y Lógica de Juego

En este capítulo, aprenderemos a implementar la detección de colisiones y a establecer la lógica del juego en el canvas. La detección de colisiones permite que los elementos interactúen entre sí y respondan al entorno, un aspecto clave para crear dinámicas en el juego. También veremos cómo estructurar la lógica de juego para definir reglas y condiciones.

Detección de Colisiones entre Rectángulos

Para determinar si dos rectángulos colisionan, comparamos sus posiciones y dimensiones. Si las áreas de dos objetos se superponen, entonces han colisionado.

javascript
"En este código, la función isColliding compara las posiciones y tamaños de dos rectángulos. Si alguna de sus áreas se superpone, la función devuelve verdadero, indicando que los rectángulos han colisionado."

Podemos usar esta función para verificar colisiones entre cualquier par de rectángulos en el canvas.

Ejemplo: Comprobación de Colisiones

A continuación, utilizaremos la función de colisión para cambiar el color de un cuadrado cuando colisiona con otro.

javascript
"En este ejemplo, verificamos si los rectángulos rect1 y rect2 están colisionando. Si es así, dibujamos rect1 en color rojo; de lo contrario, lo dibujamos en verde. Este enfoque permite visualizar la detección de colisiones en el canvas."

Detección de Colisiones con Círculos

Para detectar colisiones entre círculos, comparamos la distancia entre sus centros con la suma de sus radios. Si la distancia es menor o igual a la suma de los radios, los círculos están colisionando.

javascript
"En esta función, calculamos la distancia entre los centros de dos círculos. Si la distancia es menor que la suma de sus radios, la función devuelve verdadero, indicando que los círculos están en colisión."

Lógica de Juego

La lógica de juego define las reglas y condiciones que dictan cómo se desarrolla el juego. Esto puede incluir la detección de colisiones, el conteo de puntos, y las condiciones de victoria o derrota.

Ejemplo: Contador de Puntos

Imaginemos un escenario simple en el que un jugador gana puntos cada vez que un cuadrado toca otro objeto.

javascript
"Aquí, añadimos una variable score que aumenta en uno cada vez que rect1 colisiona con rect2. Luego, reposicionamos rect2 aleatoriamente en el canvas para que el jugador pueda intentar colisionar nuevamente, y mostramos el puntaje en la esquina superior izquierda."

Ejercicio: Implementar una Condición de Juego

Como ejercicio, intente implementar una lógica donde el juego termine si el jugador alcanza un puntaje de 10 puntos. Puede mostrar un mensaje de victoria cuando se alcance este puntaje y detener el ciclo de animación.

javascript
"En este ejercicio, añadimos una condición de victoria cuando el puntaje alcanza diez. Una vez que se cumple la condición, el ciclo de juego se detiene mostrando un mensaje de ¡Ganaste! en el centro del canvas."

Conclusión

En este capítulo, hemos aprendido a implementar la detección de colisiones y a estructurar la lógica de juego. Estas son herramientas clave para crear un juego funcional y entretenido en el canvas.


Ask me anything