Послідовний спаунінг: Флот космічної станції

Коли я розробляв першу атаку для битви з боссом космічної станції, мені знадобився спосіб спаунити флот з 40 ворогів. На відміну від попередніх систем, що використовували рандомізацію, цей флот вимагав послідовного спаунінгу. Кожен корабель мав унікальний вигляд, але однакову поведінку, і вони повинні були з'являтися в певному порядку.

pic

Флот ворогів

Для цього сценарію рандомізація порушила б візуальну цілісність флоту. Послідовний порядок додав відчуття навмисного дизайну та темпу атаки, роблячи її більш осмисленою та впливовою.

Я почав з того, що створив масив для зберігання префабів ворогів флоту:

[SerializeField]  
private GameObject[] enemyFleet;  
[SerializeField]  
private int totalEnemyFleet = 40;

Далі я написав корутину для створення ворогів у порядку:

IEnumerator SpawnEnemyFleet()   
{  
for (int i = 0; i < totalEnemyFleet; i++) {  
int index = i % enemyFleet.Length;  
Instantiate(enemyFleet[index]);  
yield return new WaitForSeconds(0.5f); // Налаштуйте час затримки за потреби  
}

Використання i % enemyFleet.Length забезпечило безперервне циклічне виконання масиву, навіть якщо загальна кількість кораблів перевищувала розмір масиву.

Переваги цього підходу

  • Контроль через інспектор: Завдяки тому, що _totalEnemyFleet є серіалізованим полем, я міг легко змінювати розмір флоту без необхідності редагувати код.
  • Гнучкість у налаштуванні часу: Корутіна дозволила мені контролювати темп процесу спаунінгу, додаючи драматичне напруження до атаки.

Послідовний спаунінг вимагав зміни мислення від рандомізації до навмисного дизайну.

Перекладено з: Sequential Spawning: Space Station Fleet

Leave a Reply

Your email address will not be published. Required fields are marked *