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);
    }
}