viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73fef8efa11d02831ff8a84a4b499fa798f2a7c827b1a7511a5dcbb6beb23dbcf931e158bc9c0758257dfedc39f83e232976568ee9d6f1a767316bc


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73fef8efa11d02831ff8a84a4b499fa798f2a7c827b1a7511a5dcbb6beb23dbcfd5434fedcccd7e83b5f9c1049dc3762721f48af919bf43


์ด ํ™”์‚ดํ‘œ ์œ„์น˜์— ์†Œํ™˜ ๋˜์•ผ ํ•˜๋Š”๋ฐ ์ฝ”๋“œ ๊ณ ์ณ๋„ ์†Œ์šฉ ์—†๋„ค

using System.Collections;
using UnityEngine;

public class Spawner : MonoBehaviour {

ย public Wave[] waves;
ย public Enemy enemy;
ย ย ย  public Transform SpawnPoint;


ย Wave currentWave;
ย int currentWaveNumber;

ย ย ย  public bool isSpawn = false;
ย ย ย  public float spawnDelay = 1.5f;
ย ย ย  float spawnTimer = 0f;


ย ย ย  int enemiesRemainingToSpawn;
ย int enemiesRemainingAlive;
ย float nextSpawnTime;

ย void Start() {
ย ย ย ย ย ย ย  NextWave();
ย ย ย  }

ย ย ย  Vector3[] positions = new Vector3[5];




ย ย ย  void Update() {


ย ย ย ย ย ย ย  float randomX = Random.Range(-0.5f, 0.5f);

ย ย ย ย ย ย ย  if (enemiesRemainingToSpawn > 0 && Time.time > nextSpawnTime) {
ย ย ย enemiesRemainingToSpawn--;
ย ย ย nextSpawnTime = Time.time + currentWave.timeBetweenSpawns;

ย ย ย Enemy spawnedEnemy = Instantiate(enemy, SpawnPoint.position , Quaternion.identity ) as Enemy;
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย 
ย ย ย spawnedEnemy.OnDeath += OnEnemyDeath;
ย ย }
ย }

ย void OnEnemyDeath() {
ย ย enemiesRemainingAlive--;

ย ย if (enemiesRemainingAlive == 0) {
ย ย ย ย ย ย ย ย ย ย ย  NextWave();
ย ย ย ย ย ย ย  }
ย }

ย void NextWave() {
ย ย currentWaveNumber++;
ย ย if (currentWaveNumber - 1 ย ย ย currentWave = waves [currentWaveNumber - 1];

ย ย ย enemiesRemainingToSpawn = currentWave.enemyCount;
ย ย ย enemiesRemainingAlive = enemiesRemainingToSpawn;
ย ย }
ย }

ย [System.Serializable]
ย public class Wave {
ย ย public int enemyCount;
ย ย public float timeBetweenSpawns;
ย }
}