Menu
CoddyTech

Revisão: Torre modular

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

challenge icon

Desafio

Fácil

Monte as duas torretas do campo de testes usando as peças. TurretControl.cs já gira cada torreta com as setas para a esquerda e para a direita, e Shell.cs faz um projétil voar para a frente. A cena dá à Turret1 um Cannon e uma Ammo com 4 projéteis, e à Turret2 um TwinCannon e uma Ammo com 3 projéteis. Escreva as peças:

  • Ammo: um shells int público e um método público bool Take(). Se ainda houver um projétil, usa um e retorna true. Se não houver nenhum, registra o nome do objeto e is empty, como em Turret2 is empty, e retorna false.
  • Weapon: um componente abstrato que sempre vem com um Ammo, com um shellPrefab público (um GameObject), um cooldown float público (o Inspector define como 1) e um método público Pull(). Um acionamento durante o tempo de recarga não faz nada e não usa nenhum projétil. Caso contrário, se Take() fornecer um projétil, o tempo de recarga começa e Fire() é executado — um método abstrato que cada arma implementa.
  • Cannon dispara um projétil a 1 unidade à frente da torreta. TwinCannon dispara dois projéteis usando um projétil de munição, a 0.4 à esquerda e 0.4 à direita desse ponto. Um projétil começa em transform.position + transform.rotation * offset, orientado como a torreta (transform.rotation), em que offset é a posição vista a partir da torreta, como new Vector3(0f, 0f, 1f).
  • Em TurretControl, a tecla Espaço aciona o gatilho de qualquer Weapon que a torreta tenha.

Pressione Play, gire e dispare até que as duas torretas fiquem sem munição e, em seguida, Check.

Experimente você mesmo

using UnityEngine;

// O que todas as armas de torreta têm em comum.
public class Weapon : MonoBehaviour
{
}

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