i have a collider that activates an event, and i would like the collider to activate only if it maintains contact for a few seconds before activating. how do i set a timer that waits for a while and is interrupted (and possibly resets) if the collider is no longer being activated? thank you for any help!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class Event : MonoBehaviour
{
[SerializeField] LayerMask DesiredMask;
public UnityEvent TriggerEntered;
public UnityEvent TriggerLeft;
public float time;
private Collider TriggerCollider;
private void OnTriggerEnter(Collider other)
{
StartCoroutine("Waiting");
if ((DesiredMask.value & (1 << other.transform.gameObject.layer)) > 0) //Look for desired layer
{
TriggerEntered.Invoke();
}
}
IEnumerator Waiting()
{
yield return new WaitForSeconds(time); // where time its a float
}
IEnumerator Stop()
{
yield return null;
}
private void OnTriggerExit(Collider other)
{
if ((DesiredMask.value & (1 << other.transform.gameObject.layer)) > 0)
{
StartCoroutine("Stop");
}
}