-
Notifications
You must be signed in to change notification settings - Fork 349
Expand file tree
/
Copy pathInteractable.cs
More file actions
54 lines (45 loc) · 1.37 KB
/
Interactable.cs
File metadata and controls
54 lines (45 loc) · 1.37 KB
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
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Interactable : MonoBehaviour {
public string interactMessage = "Press F (Y) to interact";
protected bool playerInInteractionZone;
public UnityEngine.Events.UnityEvent interactEvent;
bool selecting = false;
protected virtual void Interact () {
if (interactEvent != null) {
interactEvent.Invoke ();
}
}
protected virtual void Update () {
if (playerInInteractionZone && Input.GetAxis("Toggle") > 0) {
if (selecting) {
return;
}
selecting = true;
GameUI.CancelInteractionDisplay ();
Interact ();
}
else {
selecting = false;
}
}
protected virtual void OnTriggerEnter (Collider c) {
if (c.tag == "Player") {
playerInInteractionZone = true;
ShowInteractMessage ();
}
}
protected virtual void OnTriggerExit (Collider c) {
if (c.tag == "Player") {
GameUI.CancelInteractionDisplay ();
playerInInteractionZone = false;
}
}
protected virtual void ShowInteractMessage () {
GameUI.DisplayInteractionInfo (interactMessage);
}
public void ForcePlayerInInteractionZone () {
playerInInteractionZone = true;
}
}