wirm/Game/Assets/Scripts/MessageTrigger.cs

48 lines
No EOL
1.3 KiB
C#

/*
* Author: Reza
* Date: 7/2/25
* Description: General script for any message triggering areas
*/
using System.Collections;
using TMPro;
using UnityEngine;
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 the message been triggered already or not?
private bool _messageTriggered;
private void OnTriggerEnter(Collider other)
{
// Shows up only if the message has not been triggered and ensures only player triggers it
if (_messageTriggered || !other.CompareTag("Player")) return;
storyPanelUI.SetActive(true);
storyText.text = message;
StartCoroutine(HideMessageAfterSeconds(displayDuration));
// Prevents a 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);
}
}