SummerGame/Assets/KirillAss/Scripts/Bonuses/BonusSpawner.cs

50 lines
1.6 KiB
C#

using System.Collections;
using UnityEngine;
public class BonusSpawner : MonoBehaviour
{
[Header("Настройки спавна")]
public GameObject[] bonusPrefabs;
[Tooltip("Минимальное и максимальное время между спавнами бонусов")]
public Vector2 spawnInterval = new Vector2(10f, 20f);
[Tooltip("Как далеко впереди игрока спавнить бонус")]
public float spawnDistance = 100f;
private Transform _playerTransform;
void Start()
{
StartCoroutine(SpawnBonusRoutine());
}
IEnumerator SpawnBonusRoutine()
{
while (true)
{
float waitTime = Random.Range(spawnInterval.x, spawnInterval.y);
yield return new WaitForSeconds(waitTime);
if (bonusPrefabs.Length == 0 || RoadManager.Instance == null || RoadManager.Instance.playerTransform == null)
{
continue;
}
float spawnX = RoadManager.Instance.GetRandomLaneX();
float spawnZ = RoadManager.Instance.playerTransform.position.z + spawnDistance;
Vector3 spawnPosition = new Vector3(spawnX, 0.5f, spawnZ);
GameObject bonusPrefab = bonusPrefabs[Random.Range(0, bonusPrefabs.Length)];
GameObject bonus = SimpleObjectPool.Instance.Get(bonusPrefab, spawnPosition, Quaternion.identity);
BonusPickup pickup = bonus.GetComponent<BonusPickup>();
if (pickup != null)
{
pickup.Init(bonusPrefab);
}
}
}
}