using System.Collections; using UnityEngine; /// /// SpawnerController manages the spawning of cubes in the game. /// [RequireComponent(typeof(Animator))] public class SpawnerController : Activateable { [Header("Configuration")] public GameObject prefabCube; public Vector3 spawnOffset = new (0, -.8f, 0); private bool _isSpawning; private CubeController _cube; private Animator _animator; private void Awake() { _animator = GetComponent(); } protected override void OnActivation() { if (_cube != null) { _cube.Respawn(); _cube = null; } else SpawnCube(); } protected override void OnDeactivation() { } public void SpawnCube() { if (isActive && !_isSpawning) StartCoroutine(SpawnCubeCoroutine()); } private IEnumerator SpawnCubeCoroutine() { _isSpawning = true; yield return new WaitForSeconds(.5f); _animator.SetTrigger("Spawn"); yield return new WaitForSeconds(.3f); GameObject gameObject = Instantiate(prefabCube, transform.position + spawnOffset, Quaternion.identity); _cube = gameObject.GetComponent(); _cube.spawnerController = this; _isSpawning = false; } }