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;
}Desafío
IntermedioLas torres disparan flechas una vez por segundo.
EnemyimplementaIDamageable:TakeDamage(int amount)resta esa cantidad ahealthy destruye al enemigo cuando llega a 0 o menos.Projectile:Launch(Transform target, int damage)guarda ambos valores;Updatevuela hacia el objetivo aspeed, llama aTakeDamage(damage)al llegar y se destruye, también cuando el objetivo ya no está.Tower: añadepublic int damage = 2;y[SerializeField] private Projectile projectilePrefab;; dispara como se indicó antes desdetransform.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