Podsumowanie: modułowa wieżyczka
Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 5 z 50.
Wyzwanie
ŁatwyZbuduj z części dwie wieżyczki na poligonie testowym. TurretControl.cs już obraca każdą wieżyczkę za pomocą strzałek w lewo i w prawo, a Shell.cs wystrzeliwuje pocisk do przodu. Scena przypisuje Turret1 komponent Cannon i Ammo z 4 pociskami, a Turret2 komponent TwinCannon i Ammo z 3 pociskami. Napisz te części:
- Ammo: publiczne int
shellsi publiczna metodabool Take(). Jeśli pozostał pocisk, metoda zużywa go i zwracatrue. Jeśli nie ma już żadnego, wypisuje nazwę obiektu iis empty, na przykładTurret2 is empty, a następnie zwracafalse. - Weapon: abstrakcyjny komponent, który zawsze ma komponent Ammo, z publicznym
shellPrefab(GameObject), publicznym floatcooldown(Inspector ustawia wartość 1) i publiczną metodąPull(). Naciśnięcie spustu w trakcie odnowienia nie robi nic i nie zużywa pocisku. W przeciwnym razie, jeśliTake()zwróci pocisk, rozpoczyna się odnowienie i uruchamiana jest metodaFire(), abstrakcyjna metoda implementowana przez każdą broń. - Cannon wystrzeliwuje jeden pocisk z miejsca oddalonego o 1 jednostkę przed wieżyczką. TwinCannon wystrzeliwuje dwa pociski za jeden pocisk amunicji: jeden z miejsca przesuniętego o 0.4 w lewo, a drugi o 0.4 w prawo względem tego punktu. Pocisk rozpoczyna lot w punkcie
transform.position + transform.rotation * offset, z obrotem takim jak wieżyczka (transform.rotation), gdzieoffsetto punkt widziany z perspektywy wieżyczki, na przykładnew Vector3(0f, 0f, 1f). - W komponencie TurretControl naciśnięcie spacji pociąga za spust dowolnej broni, którą ma wieżyczka.
Naciśnij Play, obracaj wieżyczki i strzelaj, aż w obu skończy się amunicja, a następnie naciśnij Check.
Spróbuj swoich sił
using UnityEngine;
// To, co łączy wszystkie rodzaje uzbrojenia wieżyczek.
public class Weapon : MonoBehaviour
{
}
Wszystkie lekcje w sekcji Architektura gier w Unity
1Komponenty, nie hierarchie
Małe komponentyPodstawowy skrypt przeciwnikaKomponenty abstrakcyjneWspółpracujące komponentyPodsumowanie: modułowa wieżyczka4Dane serializowane
Klasy serializowalneListy w InspectorzeWyliczenia w InspectorzePodsumowanie: tabela łupów10Projekt: Arena przetrwania
BohaterTypy wrogów2Interfejsy w Unity
IDamageableInterfejsy i TryGetComponentGetComponentsPodsumowanie: klawisz interakcji5ScriptableObjects
Zasoby danychStatystyki broniWspółdzielone ustawieniaFale jako danePowtórka: baza danych przedmiotów8Kod wielokrotnego użytku
Metody rozszerzająceGeneryczny singletonGeneryczne metody pomocniczePodsumowanie: FindNearest