Menu
CoddyTech

Fale wrogów

Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 44 z 50.

challenge icon

Wyzwanie

Średni

Wrogowie pojawiają się teraz w falach, a fale są danymi. Zachowaj wszystko z poprzednich lekcji. Arena nie ma już własnych wrogów: prefabrykaty Grunt i Dasher zawierają twoje skrypty, cztery punkty pojawiania się znajdują się w rogach, a obiekt Spawner pośrodku ma skrypt WaveSpawner.

  • W pliku WaveSet.cs dodaj klasę Wave z atrybutem [System.Serializable], zawierającą public Enemy enemy (prefabrykat), public int count oraz public float spacing. WaveSet to ScriptableObject z atrybutem [CreateAssetMenu], zawierający public List<Wave> waves i public float restBetweenWaves. Zasób sceny Arena zawiera trzy fale (3 gruntów w odstępach 0.5 s, 2 dasherów w odstępach 1 s, 5 gruntów w odstępach 0.4 s) oraz 2 sekundy przerwy.
  • Enemy otrzymuje public static event Action<Enemy> Died, wywoływane z przekazaniem wroga tuż przed jego zniszczeniem.
  • WaveSpawner ma przypisane w Inspectorze waveSet i spawnPoints, a także public int Wave { get; private set; } — numer aktualnie rozgrywanej fali. Z poziomu Start uruchamiana jest korutyna, która kolejno przechodzi przez fale z zasobu. Dla każdej fali: zwiększ Wave o 1 i wyświetl jej numer w logu, np. Wave 1; pojawiaj wrogów z tej fali w liczbie określonej przez count, w odstępach spacing sekund, a wroga i (licząc od 0) w punkcie spawnPoints[i % spawnPoints.Length]; poczekaj, aż wszyscy wrogowie zginą; następnie odczekaj restBetweenWaves sekund. Po ostatniej fali zestaw zaczyna się od początku, a Wave nadal rośnie: 4, 5 i tak dalej.
  • Licz żywych wrogów za pomocą zdarzenia Died: zasubskrybuj je w OnEnable i zrezygnuj z subskrypcji w OnDisable. Spawner tylko odczytuje zasób: w edytorze zmiana wprowadzona do zasobu podczas działania gry pozostaje w zasobie po zakończeniu trybu Play.

Naciśnij Play i przetrwaj kilka fal, a następnie naciśnij Check.

Spróbuj swoich sił

using UnityEngine;

public class WaveSpawner : MonoBehaviour
{
    // Wypełnimy to w późniejszej lekcji: wysyła fale na arenę.
}

Wszystkie lekcje w sekcji Architektura gier w Unity