summaryrefslogtreecommitdiff
path: root/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts/CollisionDetector.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts/CollisionDetector.cs')
-rw-r--r--Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts/CollisionDetector.cs34
1 files changed, 34 insertions, 0 deletions
diff --git a/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts/CollisionDetector.cs b/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts/CollisionDetector.cs
new file mode 100644
index 00000000..179d8511
--- /dev/null
+++ b/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts/CollisionDetector.cs
@@ -0,0 +1,34 @@
+using System;
+using UnityEngine;
+
+namespace Assets.AbstractWiresEffect.Scripts
+{
+ internal sealed class CollisionDetector : MonoBehaviour
+ {
+ public float CollisionDistance;
+
+ private Transform _transform;
+
+ public event Action<Vector3> CollisionDetected;
+
+ private void Start()
+ {
+ _transform = transform;
+ }
+
+ private void FixedUpdate()
+ {
+ RaycastHit hit;
+ if (!Physics.Raycast(_transform.position, -transform.up, out hit, CollisionDistance))
+ return;
+
+ var distance = Vector3.Distance(_transform.position, hit.point);
+
+ if (distance > CollisionDistance)
+ return;
+
+ if (CollisionDetected != null)
+ CollisionDetected.Invoke(hit.point);
+ }
+ }
+}