50 lines
1.3 KiB
C#
50 lines
1.3 KiB
C#
|
/*
|
||
|
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);
|
||
|
}
|
||
|
}
|