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 m_Colliders = new List(); 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); } } } }