using System.Collections.Generic; using UnityEngine; // Enemy Prefabを一定間隔で生成する public class EnemySpawner : MonoBehaviour { [Tooltip("生成するEnemy Prefab")] [SerializeField] private Enemy enemyPrefab; [Tooltip("生成位置の候補")] [SerializeField] private Transform[] spawnPoints; [Tooltip("生成間隔")] [SerializeField] private float spawnInterval = 1.5f; [Tooltip("同時に存在できるEnemyの最大数")] [SerializeField] private int maxAliveCount = 5; private readonly List _aliveEnemies = new(); private float _spawnTimer; private void Update() { CleanupDestroyedEnemies(); _spawnTimer += Time.deltaTime; if (_spawnTimer < spawnInterval) return; _spawnTimer = 0f; Spawn(); } private void Spawn() { if (_aliveEnemies.Count >= maxAliveCount) return; var spawnPoint = spawnPoints[Random.Range(0, spawnPoints.Length)]; var enemy = Instantiate( enemyPrefab, spawnPoint.position, spawnPoint.rotation); _aliveEnemies.Add(enemy); } private void CleanupDestroyedEnemies() { _aliveEnemies.RemoveAll(enemy => enemy == null); } }