Saltar la navegación

5.3 Reacción ante colisiones

Se tocan... ¿y ahora qué?

En los juegos, la detección de colisiones por sí sola no es suficiente; también es importante saber cómo reaccionar ante una colisión. La "reacción" puede incluir una variedad de acciones, como detener el movimiento del personaje, reducir su salud, recoger objetos, o mostrar mensajes en la pantalla.

En el ejemplo anterior, cuando el niño (representado por imagen1.png) toca la moneda (imagen2.png), se detecta una colisión precisa usando máscaras. Como reacción a esa colisión, se puede mostrar un mensaje en la pantalla para indicar que la colisión ha ocurrido.

Ejemplos de Reacciones ante Colisiones

Algunas formas comunes de reaccionar ante una colisión en un juego son:

  • Mostrar un mensaje: Como vimos en el ejemplo anterior, podemos mostrar un mensaje que avise al jugador sobre la colisión. En ese caso, usamos pygame.font.Font para dibujar el texto en la pantalla.
  • Recoger un objeto: Si el objeto colisionado es un ítem, como una moneda, podríamos eliminar el objeto de la pantalla, indicando que ha sido recogido.
  • Detener el movimiento: En algunos juegos, al chocar con un obstáculo, el movimiento del personaje se detiene o cambia de dirección.
  • Cambiar el estado del juego: Una colisión podría llevar a un cambio de nivel, o a una acción como perder una vida.

Ejemplo: Recoger un Objeto

A continuación se muestra cómo modificar el código anterior para hacer que el objeto colisionado (la moneda) desaparezca cuando el niño lo toque, simulando que ha sido recogido.


# Si hay colisión, eliminar la moneda (rect2) para simular que ha sido recogida
if colision:
    rect2.topleft = (-100, -100)  # Mover la moneda fuera de la pantalla
    texto_colision = fuente.render("¡Moneda recogida!", True, (255, 0, 0))
    pantalla.blit(texto_colision, (250, 50))  # Mostrar mensaje

En este código, cuando se detecta la colisión entre el niño y la moneda, se mueve la moneda fuera de la pantalla (rect2.topleft = (-100, -100)), lo que simula que ha sido recogida. Además, se muestra un mensaje en la pantalla indicando que la moneda ha sido recogida.

Conclusión

La forma en que reaccionas ante una colisión depende del tipo de juego que estés creando. Puedes realizar cualquier acción que consideres necesaria, como detener el movimiento del jugador, recoger un objeto, o cambiar el estado del juego. Lo importante es definir claramente qué debe ocurrir cuando se produce una colisión y programar la reacción adecuada.

Licencia: licencia propietaria intelectual

Creado con eXeLearning (Ventana nueva)