Atire
Lição 9 de 25 do curso Jogo de Unity: Defesa de Torres da Coddy.
Uma torre dispara um Projectile contra seu alvo. O projétil voa até lá com MoveTowards, seguindo o alvo enquanto ele caminha, e causa dano ao chegar. Ele não precisa saber se atingiu um Enemy: ele procura por IDamageable, a interface para qualquer coisa que possa receber dano, então qualquer coisa que a implemente pode ser atingida.
Um alvo pode morrer enquanto um projétil está no ar. Um objeto Unity destruído é igual a null, então o projétil verifica primeiro target == null e se destrói.
Por enquanto, uma torre dispara uma vez por segundo. Ela mantém o horário do próximo disparo:
if (Time.time >= nextShot)
{
Fire();
nextShot = Time.time + 1f;
}Desafio
MédioAs torres disparam flechas uma vez por segundo.
EnemyimplementaIDamageable:TakeDamage(int amount)subtrai o valor dehealth, destruindo o inimigo quando chega a 0 ou menos.Projectile:Launch(Transform target, int damage)mantém ambos;Updatevoa até o alvo comspeed, chamaTakeDamage(damage)ao chegar e se destrói, também quando o alvo desaparece.Tower: adicionepublic int damage = 2;e[SerializeField] private Projectile projectilePrefab;; dispare como acima a partir detransform.position + Vector3.up.
Pressione “Jogar”: as flechas voam e os Grunts caem. Depois, pressione “Verificar”.
Experimente você mesmo
using UnityEngine;
// Vem depois: um projétil que voa de uma torre até seu alvo.
public class Projectile : MonoBehaviour
{
}
Todas as lições de Jogo de Unity: Defesa de Torres
Pratique por conta própria: Playground de Unity