/* Author: Reza Date: 7/2/25 Description: General script for any message triggering areas */ using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; public class MessageTrigger : MonoBehaviour { // Defines UI references [Header("UI References")] public GameObject storyPanelUI; public TMP_Text storyText; [Header("Message Settings")] // Custom message for this trigger [TextArea(3, 5)] public string message; // How long the message stays on screen public float displayDuration = 5f; // Has message been triggered already or not private bool messageTriggered = false; private void OnTriggerEnter(Collider other) { // Shows up only if message has not been triggered and ensures only player triggers it if (!messageTriggered && other.CompareTag("Player")) { storyPanelUI.SetActive(true); storyText.text = message; StartCoroutine(HideMessageAfterSeconds(displayDuration)); // Prevents message triggering again messageTriggered = true; } } private IEnumerator HideMessageAfterSeconds(float delay) { // Waits for delay to end and hides the UI yield return new WaitForSeconds(delay); storyPanelUI.SetActive(false); } }