58 lines
2.0 KiB
C#
58 lines
2.0 KiB
C#
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
|
||
public class GradualActivatorController : MonoBehaviour
|
||
{
|
||
[System.Serializable]
|
||
public class GradualActivatorEntry
|
||
{
|
||
public GradualActivator gradualActivator;
|
||
public bool activate = true; // Αν true, καλεί GraduallyActivate, αν false, καλεί GraduallyDeactivate
|
||
}
|
||
|
||
[Header("Λίστα με Gradual Activators και αν θες Activate ή Deactivate")]
|
||
[SerializeField] private List<GradualActivatorEntry> activators = new List<GradualActivatorEntry>();
|
||
|
||
[Header("Καθυστέρηση πριν ξεκινήσει κάθε Activator (προαιρετικά)")]
|
||
[SerializeField] private float delayBetweenActivators = 0.2f;
|
||
|
||
public bool DoOnlyOnce;
|
||
private bool alreadyTriggered = false;
|
||
|
||
private void OnTriggerEnter(Collider other)
|
||
{
|
||
if (other.CompareTag("Player") && !alreadyTriggered)
|
||
{
|
||
Debug.Log("[GradualActivatorController] Παίκτης μπήκε στο trigger. Ξεκινάω εντολές στα activators.");
|
||
StartCoroutine(HandleActivators());
|
||
if (DoOnlyOnce)
|
||
{
|
||
alreadyTriggered = true;
|
||
}
|
||
}
|
||
}
|
||
|
||
private IEnumerator HandleActivators()
|
||
{
|
||
foreach (var entry in activators)
|
||
{
|
||
if (entry.gradualActivator != null)
|
||
{
|
||
if (entry.activate)
|
||
{
|
||
Debug.Log($"[GradualActivatorController] Καλώ GraduallyActivate στο {entry.gradualActivator.gameObject.name}");
|
||
entry.gradualActivator.GraduallyActivate();
|
||
}
|
||
else
|
||
{
|
||
Debug.Log($"[GradualActivatorController] Καλώ GraduallyDeactivate στο {entry.gradualActivator.gameObject.name}");
|
||
entry.gradualActivator.GraduallyDeactivate();
|
||
}
|
||
|
||
yield return new WaitForSeconds(delayBetweenActivators);
|
||
}
|
||
}
|
||
}
|
||
}
|