Aimbot-ParallelEnv/Assets/Script/GameScript/Character/EnemyContainer.cs
2023-10-23 01:54:30 +09:00

65 lines
2.3 KiB
C#

using UnityEngine;
public class EnemyContainer : MonoBehaviour
{
[SerializeField] public GameObject enemyPrefab;
[SerializeField] private GameObject environmentObj;
[SerializeField] private GameObject targetControllerObj;
private TargetController targetCon;
private void Start()
{
targetCon = targetControllerObj.GetComponent<TargetController>();
}
// initialize enemy by random
public void RandomInitEnemys(int EnemyNum)
{
Debug.Log("RandomInitEnemys");
for (int i = 0; i < EnemyNum; i++)
{
float randX = UnityEngine.Random.Range(targetCon.minEnemyAreaX, targetCon.maxEnemyAreaX);
float randZ = UnityEngine.Random.Range(targetCon.minEnemyAreaZ, targetCon.maxEnemyAreaZ);
int enemyY = 1;
InitEnemyAtHere(new Vector3(randX, enemyY, randZ));
}
}
// initialize enemy by random but not in block area
public void RandomInitEnemysExcept(int enemyNum, Vector3 blockPosition, float sceneSize)
{
float randX = 0f;
float randZ = 0f;
for (int i = 0; i < enemyNum; i++)
{
randX = UnityEngine.Random.Range(targetCon.minEnemyAreaX, targetCon.maxEnemyAreaX);
randZ = UnityEngine.Random.Range(targetCon.minEnemyAreaZ, targetCon.maxEnemyAreaZ);
while (Vector3.Distance(blockPosition, new Vector3(randX, 0f, randZ)) < sceneSize / 2)
{
// while in scene area then respawn
Debug.Log("spawn enemy in area, re:roll");
randX = UnityEngine.Random.Range(targetCon.minEnemyAreaX, targetCon.maxEnemyAreaX);
randZ = UnityEngine.Random.Range(targetCon.minEnemyAreaZ, targetCon.maxEnemyAreaZ);
}
int enemyY = 1;
InitEnemyAtHere(new Vector3(randX, enemyY, randZ));
}
}
// initialize enemy to position
public void InitEnemyAtHere(Vector3 position)
{
Instantiate(enemyPrefab, position + environmentObj.transform.position, Quaternion.identity, this.transform);
}
// destroyEnemy delete enemyContainer's all enemy
public void DestroyAllEnemys()
{
foreach (Transform childObj in this.transform)
{
childObj.GetComponent<States>().DestroyMe();
}
}
}