50 lines
1.0 KiB
C#
50 lines
1.0 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class Spawner : MonoBehaviour
|
|
{
|
|
[System.Serializable]
|
|
public struct SpawnableObject
|
|
{
|
|
public GameObject prefab;
|
|
[Range(0f, 1f)]
|
|
public float spawnChance;
|
|
}
|
|
|
|
public SpawnableObject[] objects;
|
|
|
|
public float minSpawnRate = 1f;
|
|
public float maxSpawnrate = 2f;
|
|
|
|
private void OnEnable()
|
|
{
|
|
Invoke(nameof(Spawn), Random.Range(minSpawnRate, maxSpawnrate));
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
CancelInvoke();
|
|
}
|
|
|
|
private void Spawn()
|
|
{
|
|
float spawnChance = Random.value;
|
|
|
|
foreach (var obj in objects)
|
|
{
|
|
if (spawnChance < obj.spawnChance)
|
|
{
|
|
GameObject obstacle = Instantiate(obj.prefab);
|
|
obstacle.transform.position += transform.position;
|
|
break;
|
|
}
|
|
|
|
spawnChance -= obj.spawnChance;
|
|
}
|
|
|
|
Invoke(nameof(Spawn), Random.Range(minSpawnRate, maxSpawnrate));
|
|
}
|
|
|
|
}
|