Menu
CoddyTech

Disparar

Lección 9 de 25 del curso Juego de Unity: Defensa de torres de Coddy.

Una torre dispara un Projectile a su objetivo. El proyectil vuela hasta allí con MoveTowards, siguiendo al objetivo mientras camina, y lo daña al llegar. No necesita saber que ha alcanzado a un Enemy: solicita IDamageable, la interfaz para cualquier cosa que pueda recibir daño, así que se puede disparar a cualquier cosa que la implemente.

Un objetivo puede morir mientras un proyectil está en el aire. Un objeto de Unity destruido se compara como igual a null, así que el proyectil comprueba primero target == null y se destruye.

Por ahora, una torre dispara una vez por segundo. Guarda el momento de su próximo disparo:

if (Time.time >= nextShot)
{
    Fire();
    nextShot = Time.time + 1f;
}
challenge icon

Desafío

Intermedio

Las torres disparan flechas una vez por segundo.

  1. Enemy implementa IDamageable: TakeDamage(int amount) resta esa cantidad a health y destruye al enemigo cuando llega a 0 o menos.
  2. Projectile: Launch(Transform target, int damage) guarda ambos valores; Update vuela hacia el objetivo a speed, llama a TakeDamage(damage) al llegar y se destruye, también cuando el objetivo ya no está.
  3. Tower: añade public int damage = 2; y [SerializeField] private Projectile projectilePrefab;; dispara como se indicó antes desde transform.position + Vector3.up.

Pulsa «Jugar»: las flechas vuelan y los Grunts caen. Después, pulsa «Comprobar».

Pruébalo tú mismo

using UnityEngine;

// Viene más adelante: un proyectil que vuela desde una torre hasta su objetivo.
public class Projectile : MonoBehaviour
{
}

Todas las lecciones de Juego de Unity: Defensa de torres

Practica por tu cuenta: Playground de Unity