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

๋ฐค์ƒˆ ๋ดค๋Š”๋ฐ ์ € ์ง€์ • ์œ„์น˜์— ์–ด๋–ป๊ฒŒ ์  ์Šคํฐ์ด ์†Œํ™˜๋˜๋Š”๊ฑธ๊นŒ




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 CreatePositions()

ย  ย  {

ย  ย  ย  ย  float viewPosY = 1.2f;

ย  ย  ย  ย  float viewPosX = 0f;

ย  ย  ย  ย  float gapX = 1f / 6f;

ย  ย  ย  ย  for (int i = 0; i

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  viewPosX = gapX + gapX * i;

ย  ย  ย  ย  ย  ย  Vector3 viewPos = new Vector3(viewPosX, viewPosY, 3);

ย  ย  ย  ย  ย  ย  Vector3 worldPos = Camera.main.ViewportToWorldPoint(viewPos);

ย  ย  ย  ย  ย  ย  worldPos.z = 0f;

ย  ย  ย  ย  ย  ย  positions[i] = worldPos;

ย  ย  ย  ย  }

ย  ย  }






ย  ย  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.localPosition, 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;

}

}