์ด ํ์ดํ ์์น์ ์ํ ๋์ผ ํ๋๋ฐ ์ฝ๋ ๊ณ ์ณ๋ ์์ฉ ์๋ค
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;
ย }
}
1. ์ํ์ ๋๋? 2. ๋ง์ฝ์ 2๊ฐ ์ด์ ๊ฐ์ด ํ๋ฉด ๊ฐ์ ๊ณณ์์ ์ํ๋๊ณ ์๋? /// 1๋ฒ -> ์ธ์คํด์์์ดํธ๊ฐ ์ ์์๋ํ๋์ง์ ๋ํด์ ์ง๋ฌธ / 2๋ฒ -> ๋ญ๊ฐ ์์๋๋ค๊ณ ํ๋๋ฐ ๊ฐ์ ์์น๋?( ์ฆ ์ด์ํ๊ฒ ๋์ค๋๋ผ๋ ๊ฐ์ ๊ณณ์์ ์ผ์ ํ๊ฒ ๋ฌธ์ ๊ฐ ์๋์ง ) ๊ธ๊ณ ์ง ๋ณด๋๊น enemy์ ๋๋๊ทธํด์ ์ฐ๋ ๊ฒ ๊ฐ์๋ฐ ํ๋ฆฌํน์ ๋ด๊ฐ ์๊ธฐ๋ก GameObject ํ์ ์ธ๋ฐ ์คํฌ๋ฆฝํธ๊ฐ ๋ค์ด๊ฐ ๊ฒ ๊ฐ๊ฑฐ๋ ? ํน์ Instantiate์์ ์ฌ์ฉํ๊ณ ์๋ enemy์ ์ ์์ ์ธ prefab๋ฃ์๋์ง ํ์ธํด๋ด๋ผ.
๊ทธ๋ฆฌ๊ณ Instantiate์์ as ์จ์ง๋? ๋๋ ์ ๋ฐ ์์ผ๋ก ์์จ์ ๊ทธ๋ฐ๋ฐ ํ์ ์บ์คํ ์ด๋๋???
์ธ์คํด์์์ดํธ๋ ํ๋ฆฌํน ๋ณต์ฌํด์ ์์ฑํ๋๊ฑด๋ฐ ์ด๊ฒ ํ์ ์บ์คํ ์ผ๋ก ๊ฐ์ง ์ ์๋? Enemy spawnedEnemey = ((GameObject)Instantiate(ํ๋ผ๋ฉํฐ๋ค)).GetComponent<Enemy>(); ์ด๋ ํด์ผํ๋๊ฑฐ์๋๊ฐ ๋ ์ด๋ฐ ์์ผ๋ก๋ง ์์ฑํด์
๋ด๊ฐ ๋ณด๊ธฐ์๋ ๋ฌธ์ ๊ฐ ์์. debug.log๋กspawnpoint.position์ ๋์๋ณด๊ณ ๋ง๋ ์์น์ธ์ง ๋ด๋ด
๊ธ์จ๊ฐ ์ ์ ๋ณด์ด๊ธด ํ๋๋ฐ ํ์ดํ ์์น๋ spawner(?)๊ณ ์์ฑ ์์น๋ spawnpoint์ position์. ์ง๊ธ ์ฝ๋ ๋๋ก๋ฉด spawnpoint์ ๋์ผํ ์์น์ ์์ฑ