When player enters a collision area for a few seconds, a warning popup will appear. We create a timer called elapsedTime, using OnTriggerStay to start timer and OntriggerExit to reset the timer.
using UnityEngine;
using System.Collections;
public class TimeDelayTrigger : MonoBehaviour {
public float elapsedTime = 0f;
bool ToggleGUI = false;
bool isCreated = false;
void OnTriggerStay(Collider other){
if (other.gameObject.CompareTag ("Player"))
{
elapsedTime += Time.deltaTime;
Debug.Log("Started" + elapsedTime);
if(elapsedTime >= 5.0f){
ToggleGUI = true;
}
}
}
void OnTriggerExit(Collider other){
elapsedTime = 0f;
}
void OnGUI(){
if (ToggleGUI == true) {
if(!isCreated){
GameObject msg = (GameObject)Instantiate(Resources.Load("PopupMsg"));
msg.transform.SetParent(this.transform);
isCreated = true;
}
}
}
}