Lección 2.4: Decisiones de colisiones

Tutorial

Beginner

+10XP

50 mins

(777)

Unity Technologies

Lección 2.4: Decisiones de colisiones

Descripción general:

Nuestro juego está progresando muy bien, pero hay algunas cosas importantes que debemos añadir antes de que esté terminado. En primer lugar, en vez de pulsar S para generar los animales, los generaremos con un temporizador para que aparezcan cada ciertos segundos. A continuación, añadiremos colisionadores a todos nuestros Prefabs y haremos que lanzar un proyectil contra un animal lo destruya. Por último, mostraremos un mensaje de «Game Over» si algún animal consigue esquivar al jugador.

Resultado del proyecto:

Los animales aparecerán en un intervalo de tiempo y caminarán por la pantalla, desencadenando un mensaje de «Game Over» si consiguen esquivar al jugador. Se destruirán si el jugador los golpea con un proyectil para alimentarlos.

1. Haz un nuevo método para generar animales

Nuestro gestor de generación tiene buena pinta, pero todavía tenemos que pulsar S para que funcione. Si queremos que el juego genere animales automáticamente, tenemos que empezar por escribir nuestra primera función personalizada.
  1. En SpawnManager.cs, crea la función void SpawnRandomAnimal() {} debajo de Update()
  2. Corta y pega el código dentro de la sentencia if a la nueva función
  3. Llama SpawnRandomAnimal(); si la tecla S se pulsa

2. Genera animales en intervalos de tiempo

Guardamos el código de generación en una función personalizada, pero aún tenemos que pulsar la tecla S. Tenemos que generar los animales en intervalos, para que aparezcan aleatoriamente cada pocos segundos.
  1. En Start(), usa InvokeRepeating para generar animales en función de un intervalo de tiempo, luego haz una prueba.
  2. Elimina la sentencia if que comprueba si la tecla S se pulsó
  3. Define private startDelay y spawnInterval como nuevas variables y haz una prueba en el juego para corregir los valores de las variables

3. Agrega un componente Collider y Trigger

Los animales se generan perfectamente y el jugador puede dispararles proyectiles, pero no ocurre nada cuando colisionan. Si queremos que los proyectiles y los animales se destruyan al colisionar, tenemos que darles unos componentes conocidos: los «Colliders».
  1. Haz doble clic en uno de los animales Prefabs, y Add Component (Agregar componente) > Box Collider.
  2. Haz clic en Edit Collider (Editar Collider), luego arrastra las manillas del colisionador para que abarquen el objeto.
  3. Marca la casilla «Is Trigger».
  4. Repite este proceso en cada uno de los animales y en el proyectil.
  5. Agrega un RigidBody component al proyectil y desmarca la casilla Use Gravity (Usar gravedad).

4. Destruye objetos al colisionar

Ahora que los animales y el proyectil tienen Box Colliders con triggers, necesitamos codificar un nuevo script para destruirlos al impactar.
  1. Crea un nuevo script llamado DetectCollisions.cs y agrégalo a cada animal Prefab, luego ábrelo
  2. Antes del final } agrega la función OnTriggerEnter usando autocompletar
  3. En OnTriggerEnter, escribe Destroy(gameObject);, luego haz un prueba
  4. En OnTriggerEnter, escribe Destroy(other.gameObject);

5. Desencadena un mensaje de «Game Over»

El jugador puede defender su campo contra los animales por el tiempo que quiera, pero tenemos que avisarle que ha perdido con un mensaje de «Game Over» si algún animal esquiva al jugador.
  1. En DestroyOutOfBounds.cs, en la condicional else if que comprueba si los animales alcanzaron el fondo de la pantalla, agrega un mensaje de «Game Over»:
    Debug.Log(“Game Over!”).
  2. Limpia tu código con comentarios.
  3. Si usas Visual Studio, haz clic en Edit > Advanced > Format document para corregir los problemas de sangría.
    (En Mac, haz clic en Edit > Format > Format Document).

6. Resumen de la lección

Nueva funcionalidad

  • Los animales aparecen en intervalos de tiempo y caminan por la pantalla.
  • Cuando los animales consiguen rebasar al jugador, se muestra un mensaje de «Game Over».
  • Si un proyectil se encuentra con un animal, ambos resultan eliminados.

Nuevos conceptos y habilidades

  • Crear métodos y funciones personalizados
  • Utilizar invokeRepeating() para repetir un código
  • Colliders y Triggers
  • Override (Funciones de sobreescritura)
  • Guardar mensajes de depuración en la consola

Complete this Tutorial