Menu
CoddyTech

Melhorias

Parte da seção Arquitetura de jogos no Unity do Journey de Unity da Coddy. Lição 45 de 50.

challenge icon

Desafio

Médio

Power-ups. Mantenha tudo das lições anteriores. Um coração e um escudo estão na arena, e os prefabs Heart e Shield estão prontos para serem deixados pelas ondas. Tudo que o herói pode coletar implementa uma interface, então o herói nunca precisa conhecer os tipos.

  • IPickup declara um método, void Collect(Hero hero);.
  • Heart implementa esse método, com amount (2) definido no Inspector: cura o herói em amount e se destrói.
  • Shield implementa esse método, com duration (5) definido no Inspector: mantém o herói protegido de todos os golpes por duration segundos e se destrói.
  • Hero recebe public void Heal(int amount), que aumenta a vida, mas nunca acima de maxHealth, e registra a vida como ocorre ao receber um golpe; um herói caído não é curado. Ele recebe public void Protect(float seconds), que o mantém protegido dos golpes até seconds a partir de agora, assim como safeTime faz ao receber um golpe. Ele também recebe OnTriggerEnter: quando algo com que ele colidiu tiver um IPickup, ele chama Collect(this) nesse objeto. Um CharacterController recebe mensagens de gatilho sem um Rigidbody.
  • Cada Wave recebe um public GameObject reward. O Inspector não pode exibir um campo de tipo interface, então o campo armazena o prefab como um GameObject. Quando uma onda é derrotada, antes do intervalo, o spawner deixa a recompensa da onda, se houver, na própria posição, no meio da arena. O asset atribui um Heart à onda 1 e um Shield à onda 2.

Pressione Play, vença uma onda e pegue sua recompensa, depois Check.

Experimente você mesmo

// Uma lição posterior vai preencher isto: qualquer coisa que o herói possa pegar.
public interface IPickup
{
}

Todas as lições de Arquitetura de jogos no Unity