wirm/Game/Assets/Scripts/MessageTrigger.cs

48 lines
1.3 KiB
C#
Raw Normal View History

/*
2025-02-15 00:35:53 +08:00
* Author: Reza
* Date: 7/2/25
* Description: General script for any message triggering areas
*/
using System.Collections;
using TMPro;
2025-02-15 00:35:53 +08:00
using UnityEngine;
public class MessageTrigger : MonoBehaviour
{
// Defines UI references
2025-02-15 00:35:53 +08:00
[Header("UI References")] public GameObject storyPanelUI;
public TMP_Text storyText;
2025-02-15 00:35:53 +08:00
[Header("Message Settings")]
// Custom message for this trigger
2025-02-15 00:35:53 +08:00
[TextArea(3, 5)]
public string message;
// How long the message stays on screen
2025-02-15 00:35:53 +08:00
public float displayDuration = 5f;
// Has the message been triggered already or not?
private bool _messageTriggered;
private void OnTriggerEnter(Collider other)
{
2025-02-15 00:35:53 +08:00
// 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;
}
2025-02-15 00:35:53 +08:00
private IEnumerator HideMessageAfterSeconds(float delay)
{
// Waits for delay to end and hides the UI
yield return new WaitForSeconds(delay);
storyPanelUI.SetActive(false);
}
2025-02-15 00:35:53 +08:00
}