3
This commit is contained in:
46
unity/Assets/2.5D Engine/Scripts/EnemySpawner.cs
Normal file
46
unity/Assets/2.5D Engine/Scripts/EnemySpawner.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
using UnityEngine;
|
||||
namespace IndianOceanAssets.Engine2_5D
|
||||
{
|
||||
// Spawns enemies at random positions and intervals
|
||||
public class EnemySpawner : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private GameObject enemyEntity; // Enemy prefab
|
||||
|
||||
[SerializeField]
|
||||
private Transform[] spawnPosition; // Possible spawn points
|
||||
|
||||
[SerializeField]
|
||||
private float spawnTime = 4f; // Time between spawns
|
||||
|
||||
// Starts repeated spawning
|
||||
private void Start()
|
||||
{
|
||||
InvokeRepeating("SpawnEnemies", 0f, spawnTime);
|
||||
}
|
||||
|
||||
// Spawns a random number of enemies at random positions
|
||||
public void SpawnEnemies()
|
||||
{
|
||||
int enemyNo = Random.Range(1, 4);
|
||||
|
||||
for (int i = 0; i < enemyNo; i++)
|
||||
{
|
||||
int randomSpawnPosition = Random.Range(0, spawnPosition.Length);
|
||||
|
||||
if (spawnPosition[randomSpawnPosition])
|
||||
{
|
||||
// Randomize spawn position slightly
|
||||
Vector3 randomUnitCircle = new Vector3(Random.Range(-1f, 1f), .5f, Random.Range(-1f, 1f));
|
||||
Instantiate(enemyEntity, spawnPosition[randomSpawnPosition].position + randomUnitCircle, Quaternion.identity);
|
||||
}
|
||||
}
|
||||
|
||||
// Decrease spawn time to increase difficulty, but not below 2 seconds
|
||||
spawnTime -= .5f;
|
||||
|
||||
if (spawnTime <= 2f)
|
||||
spawnTime = 2f;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user