Advertisement
romi_fauzi

RaycastHelper2D

Oct 2nd, 2024
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.14 KB | None | 0 0
  1. using UnityEngine;
  2. using UnityEngine.Events;
  3.  
  4. public class RaycastHelper2D : MonoBehaviour
  5. {
  6.     [SerializeField] private Vector2 raycastDirection;
  7.     [SerializeField] private float raycastDistance;
  8.     [SerializeField] private bool hitEvent = true;
  9.     [SerializeField] private LayerMask hitLayerMask;
  10.  
  11.     [SerializeField] private UnityEvent OnRaycastEvent;
  12.    
  13.     // Update is called once per frame
  14.     void Update()
  15.     {
  16.         var hit = IsRaycastHit(hitEvent);
  17.         if (hit)
  18.         {
  19.             OnRaycastEvent?.Invoke();
  20.         }
  21.     }
  22.  
  23.     private void OnDrawGizmosSelected()
  24.     {
  25.         if (!enabled) return;
  26.  
  27.         var p = transform.position;
  28.  
  29.         Gizmos.color = IsRaycastHit(hitEvent) ? Color.red : Color.green;
  30.         Gizmos.DrawLine(p, (p + (Vector3)raycastDirection * raycastDistance));
  31.     }
  32.  
  33.     private bool IsRaycastHit(bool hit)
  34.     {
  35.         var p = transform.position;
  36.         var raycastHit = Physics2D.Raycast(p, raycastDirection, raycastDistance, hitLayerMask.value);
  37.         var result = hit ? raycastHit.collider != null : raycastHit.collider == null;
  38.         return result;
  39.     }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement