52 lines
1.5 KiB
C#
52 lines
1.5 KiB
C#
using StarterAssets;
|
|
using UnityEngine;
|
|
using Yarn.Unity;
|
|
|
|
namespace NightclubArcadia.Dialogue
|
|
{
|
|
/// <summary>
|
|
/// Trigger-zone interactable: player walks in range, presses E, and this
|
|
/// starts the given Yarn node. The reverse of DialogueTransitionController's
|
|
/// <<enter_environment>> — this is the "step into dialogue" half of the loop.
|
|
/// </summary>
|
|
public class DialogueInteractable : MonoBehaviour
|
|
{
|
|
[SerializeField] private DialogueRunner dialogueRunner;
|
|
[SerializeField] private GameObject dialogueUI;
|
|
[SerializeField] private GameObject playerArmature;
|
|
[SerializeField] private string yarnNodeName = "Bartender_Chat";
|
|
|
|
private bool playerInRange = false;
|
|
|
|
void OnTriggerEnter(Collider other)
|
|
{
|
|
if (other.CompareTag("Player"))
|
|
playerInRange = true;
|
|
}
|
|
|
|
void OnTriggerExit(Collider other)
|
|
{
|
|
if (other.CompareTag("Player"))
|
|
playerInRange = false;
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
if (playerInRange && Input.GetKeyDown(KeyCode.E))
|
|
{
|
|
StartConversation();
|
|
}
|
|
}
|
|
|
|
void StartConversation()
|
|
{
|
|
var playerController = playerArmature.GetComponent<ThirdPersonController>();
|
|
if (playerController != null)
|
|
playerController.enabled = false;
|
|
|
|
dialogueUI.SetActive(true);
|
|
dialogueRunner.StartDialogue(yarnNodeName);
|
|
}
|
|
}
|
|
}
|