aboutsummaryrefslogtreecommitdiff
path: root/JamHelper/Assets/JamTools/FPSControllerVelocity/Scripts/WallChecker.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2022-01-29 11:36:08 +0800
committerchai <chaifix@163.com>2022-01-29 11:36:08 +0800
commit60c2e26bc432273d41365165c5457db7e51aa03d (patch)
tree7596f14d5e870793c267f531712a37809bb6deac /JamHelper/Assets/JamTools/FPSControllerVelocity/Scripts/WallChecker.cs
parent53593cf28d07d544a4d498dc807e7f9e53f17236 (diff)
*rename
Diffstat (limited to 'JamHelper/Assets/JamTools/FPSControllerVelocity/Scripts/WallChecker.cs')
-rw-r--r--JamHelper/Assets/JamTools/FPSControllerVelocity/Scripts/WallChecker.cs74
1 files changed, 74 insertions, 0 deletions
diff --git a/JamHelper/Assets/JamTools/FPSControllerVelocity/Scripts/WallChecker.cs b/JamHelper/Assets/JamTools/FPSControllerVelocity/Scripts/WallChecker.cs
new file mode 100644
index 0000000..8137670
--- /dev/null
+++ b/JamHelper/Assets/JamTools/FPSControllerVelocity/Scripts/WallChecker.cs
@@ -0,0 +1,74 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace JamTools
+{
+
+
+ public class WallChecker : MonoBehaviour
+ {
+
+ private bool m_IsOnWall;
+ public bool IsOnWall
+ {
+ get
+ {
+ return m_IsOnWall;
+ }
+ }
+
+ private List<Collider> m_Colliders = new List<Collider>();
+
+ private void Update()
+ {
+ if (m_IsOnWall && m_Colliders.Count == 0)
+ {
+ m_IsOnWall = false;
+ }
+ }
+
+ public bool GetCollisionPoint(out Vector3 point)
+ {
+ bool result = false;
+ point = Vector3.zero;
+ if (m_Colliders.Count > 0)
+ {
+ float dist = 100f;
+ for (int i = 0; i < m_Colliders.Count; ++i)
+ {
+ Collider col = m_Colliders[i];
+ Vector3 p = ColliderUtility.FindClosestPoint(col, transform.position);
+ if (Vector3.Distance(p, transform.position) <= dist)
+ {
+ dist = Vector3.Distance(p, transform.position);
+ point = p;
+ result = true;
+ }
+ }
+ }
+ return result;
+ }
+
+ private void OnTriggerEnter(Collider other)
+ {
+ m_IsOnWall = true;
+
+ m_Colliders.Add(other);
+ }
+
+ private void OnTriggerStay(Collider other)
+ {
+ }
+
+ private void OnTriggerExit(Collider other)
+ {
+ if (m_Colliders.Contains(other))
+ {
+ m_Colliders.Remove(other);
+ }
+ }
+
+ }
+
+}