Spaces:
Running
Running
File size: 1,837 Bytes
c80142e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
using UnityEngine;
using TMPro;
public class InteractManager : MonoBehaviour
{
private StarterAssetsInputs _input;
public TextMeshProUGUI tooltip;
private InteractHandler currentHoverTarget;
[SerializeField] private bool canInteract = false;
void Start()
{
_input = GetComponent<StarterAssetsInputs>();
HideToolTip();
}
void Update()
{
if (!canInteract) {
HideToolTip();
return;
}
Ray ray = new Ray(Camera.main.transform.position, Camera.main.transform.forward);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
InteractHandler interactObject = hit.collider.GetComponent<InteractHandler>();
if (interactObject != null && interactObject.interactable)
{
// Show tooltip if it's a new object
if (interactObject != currentHoverTarget)
{
currentHoverTarget = interactObject;
ShowToolTip(interactObject.tooltipText);
}
// Interact on key press
if (_input != null && _input.interact)
{
interactObject.InteractLogic();
}
return;
}
}
if (currentHoverTarget != null)
{
currentHoverTarget = null;
HideToolTip();
}
}
public void ShowToolTip(string message)
{
tooltip.text = message;
tooltip.gameObject.SetActive(true);
}
public void HideToolTip()
{
tooltip.gameObject.SetActive(false);
}
public void UnlockInteract(bool unlock)
{
canInteract = unlock;
}
}
|