using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class EnemySpawnBox_1 : MonoBehaviour
{
public string compareTag;

public UnityEvent onTriggerExitEvent;
public UnityEvent onTriggerStayEvent;
public bool enableSpawn = false;
public GameObject[] enemiesprefabs;
private BoxCollider2D area;
// ๋™์‹œ ์  ์Šคํฐ ๊ฐฏ์ˆ˜
int enemyVisibleLimit;
// ์ตœ๋Œ€ ์  ์Šคํฐ ๊ฐฏ์ˆ˜
int enemySpawnLimit;

// ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์˜ฌ ๋ฐฐ์—ด
public GameObject[] enemyclonelist;

private new List<GameObject> gameObject = new List<GameObject>();




public void OnTriggerExit2D(Collider2D collision) {
if (collision.gameObject.CompareTag(compareTag)) {
// onTriggerExitEvent.Invoke();
enableSpawn = false;
}
}

public void OnTriggerStay2D(Collider2D collision) {
if (collision.gameObject.CompareTag(compareTag)) {
//onTriggerStayEvent.Invoke();
enableSpawn = true;
}
}
void Start() {

area = GetComponent<BoxCollider2D>();
area.enabled = true;
// ์  ์Šคํฐ ๊ด€๋ จ ๊ฐ’ ์ดˆ๊ธฐํ™”
enemyVisibleLimit = 2;
enemySpawnLimit = 10;
InvokeRepeating("Spawn", 0, 2);
}


private Vector3 GetRandomPosition()
{
Vector3 basePosition = transform.position;
Vector3 size = area.size;
float posX = basePosition.x + Random.Range(-size.x/2f, size.x/2f);
float posY = basePosition.y + Random.Range(-size.y/2f, size.y/2f);
float posZ = basePosition.z + Random.Range(-size.z/2f, size.z/2f);
Vector3 spawnPos = new Vector3(posX, posY, posZ);
return spawnPos;
}

private void Spawn()
{
if (enableSpawn)
{
// Prefub์˜ ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด์„œ ์  ๊ฐฏ์ˆ˜ ์ฐพ์•„์˜ค๊ธฐ
enemyclonelist = GameObject.FindGameObjectsWithTag("Enemy");
if(enemyclonelist.Length < 5)
{
int selection = Random.Range(0, enemiesprefabs.Length);
GameObject selectedPrefab = enemiesprefabs[selection];
Vector3 spawnPos = GetRandomPosition();//๋žœ๋ค์œ„์น˜ํ•จ์ˆ˜
GameObject instance = Instantiate(selectedPrefab, spawnPos, Quaternion.identity);
gameObject.Add(instance);
}
// else if(enemyclonelist.Length >= 5) { enableSpawn = false;}
}
}
}



์œ„ ์ฝ”๋“œ๋Œ€๋กœ ํ•˜๋ฉด ๋ฆฌ์Šคํฐ ๋ฐ•์Šค ์ฝœ๋ผ์ด๋” ์˜์—ญ ์•ˆ์—์„œ ๋ชฌ์Šคํ„ฐ๋“ค์ด ๋žœ๋คํ•˜๊ฒŒ ์  ๋˜๋Š”๋ฐ

๋ฌธ์ œ๋Š” "enemy"ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง„ ๋ชฌ์Šคํ„ฐ 5๋งˆ๋ฆฌ๊ฐ€ ๋ฆฌ์Šคํฐ ๋˜๊ณ  ๋‚˜๋ฉด


๊ฐ™์€ ์”ฌ ์•ˆ์— ๋‹ค๋ฅธ ์œ„์น˜์—๋„ ๋”ฐ๋กœ ๋ชฌ์Šคํ„ฐ 5๋งˆ๋ฆฌ๊ฐ€ ๋ฆฌ์Šคํฐ ๋˜๋„๋ก ํ•˜๊ณ  ์‹ถ์€๋ฐ


๋ฆฌ์Šคํฐ๋ฐ•์Šค๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋‹ค๋ฅธ๊ณณ์— ๋‘๋ฉด ๋ชฌ์Šคํ„ฐ๋Š” ์ „์ฒด ๋งต๊ธฐ์ค€ enemy๊ฐ€ ์ด๋ฏธ 5๋งˆ๋ฆฌ๊ฐ€ ์ฐจ์„œ

๋”์ด์ƒ ๋ฆฌ์Šคํฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


๋ฆฌ์Šคํฐ ๋ฐ•์Šค๋งˆ๋‹ค ๋ชฌ์Šคํ„ฐ ํƒœ๊ทธ๋ฅผ enemy2,enemy3 ์ด๋Ÿฐ์‹์œผ๋กœ ํ•˜๋ฉด ํ•ด๊ฒฐ์€ ๋˜๋Š”๋ฐ ๊ทธ๋Ÿฌ๋ฉด ํƒœ๊ทธ๊ฐฏ์ˆซ๊ฐ€ ๋„ˆ๋ฌด ๋Š˜์–ด๋‚ ๊ฒƒ ๊ฐ™์€๋ฐ

๊ฐ™์€ enemyํƒœ๊ทธ์—ฌ๋„ ๋ฆฌ์Šคํฐ ๋ฐ•์Šค๋งˆ๋‹ค ๋”ฐ๋กœ ์ธ์‹์ด ๋˜๊ฒŒ ํ•  ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”?