Menu
CoddyTech

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;
}
challenge icon

Desafio

Médio

As torres disparam flechas uma vez por segundo.

  1. Enemy implementa IDamageable: TakeDamage(int amount) subtrai o valor de health, destruindo o inimigo quando chega a 0 ou menos.
  2. Projectile: Launch(Transform target, int damage) mantém ambos; Update voa até o alvo com speed, chama TakeDamage(damage) ao chegar e se destrói, também quando o alvo desaparece.
  3. Tower: adicione public int damage = 2; e [SerializeField] private Projectile projectilePrefab;; dispare como acima a partir de transform.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