using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemySpawner : MonoBehaviour { public List<GameObject> enemyPrefabs; // 敵のプレファブのリスト public float spawnRate = 5.0f; // 敵を生成する間隔(秒) public float timeToChangeEnemy = 30.0f; // 敵の種類を変更する間隔(秒) public float spawnDistance = 50.0f; // カメラからの敵の生成距離 private float elapsedTime = 0.0f; // ゲーム開始からの経過時間 private float lastSpawnTime = 0.0f; // 最後に敵を生成した時間 private int currentEnemyIndex = 0; // 現在の敵のインデックス void Update() { elapsedTime += Time.deltaTime; // 敵の種類を変更する時間が来た場合 if (elapsedTime > timeToChangeEnemy * (currentEnemyIndex + 1) && currentEnemyIndex < enemyPrefabs.Count - 1) { currentEnemyIndex++; } // 敵を生成する時間が来た場合 if (elapsedTime - lastSpawnTime > spawnRate) { SpawnEnemy(); lastSpawnTime = elapsedTime; } } void SpawnEnemy() { // プレイヤーの位置を取得 Vector3 playerPosition = Camera.main.transform.position; // ランダムな方向を計算 Vector3 randomDirection = Random.insideUnitSphere.normalized; // カメラから一定の距離離れた位置を計算 Vector3 spawnPosition = playerPosition + randomDirection * spawnDistance; // Y座標を0.5fに設定して、敵が地面にいるようにする spawnPosition.y = 0.5f; // 敵を生成 GameObject enemyToSpawn = enemyPrefabs[currentEnemyIndex]; Instantiate(enemyToSpawn, spawnPosition, Quaternion.identity); } }