From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- Client/Assets/Scripts/Walls/XTrigger.cs | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Client/Assets/Scripts/Walls/XTrigger.cs (limited to 'Client/Assets/Scripts/Walls/XTrigger.cs') diff --git a/Client/Assets/Scripts/Walls/XTrigger.cs b/Client/Assets/Scripts/Walls/XTrigger.cs new file mode 100644 index 00000000..cea27e25 --- /dev/null +++ b/Client/Assets/Scripts/Walls/XTrigger.cs @@ -0,0 +1,42 @@ +using UnityEngine; +using XUtliPoolLib; + +public abstract class XTrigger : MonoBehaviour +{ + protected IXPlayerAction _interface; + private CapsuleCollider _cap = null; + + // Use this for initialization + void Awake() + { + _cap = GetComponent(); + _cap.enabled = false; + } + + void Update() + { + if (_interface == null || _interface.Deprecated) _interface = XInterfaceMgr.singleton.GetInterface(1); + + if (_interface != null && _interface.IsValid) + { + Vector3 pos = _interface.PlayerPosition(true); + Vector3 last_pos = _interface.PlayerLastPosition(true); + + if ((last_pos - pos).sqrMagnitude > 0) + { + CollisionDetected(pos); + } + } + } + + private void CollisionDetected(Vector3 pos) + { + Vector3 delta = (pos - (_cap.transform.position + _cap.center)); delta.y = 0; + if (delta.sqrMagnitude < _cap.radius * _cap.radius) + { + OnTriggered(); + } + } + + protected abstract void OnTriggered(); +} -- cgit v1.1-26-g67d0