Advertisement
bono_u2

Untitled

Jan 13th, 2021 (edited)
428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.30 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. public class TestRay : MonoBehaviour
  4. {
  5.     #region SerializeFields
  6.     [SerializeField] private float maxDistance = 5f;
  7.     #endregion
  8.  
  9.     #region Private
  10.     private Vector3 point = Vector3.zero;
  11.     #endregion
  12.  
  13.     #region Unity methods
  14.     private void Update()
  15.     {
  16.         var mousePosition = Input.mousePosition;
  17.         var ray = Camera.main.ScreenPointToRay(mousePosition);
  18.  
  19.         if (Physics.Raycast(ray, out var hit))
  20.             point = hit.point;
  21.         else
  22.         {
  23.             var worldPoint = Camera.main.ScreenToWorldPoint(new Vector3(mousePosition.x, mousePosition.y, Camera.main.farClipPlane));
  24.             var p = transform.position + (worldPoint - transform.position).normalized * maxDistance;
  25.             ray = new Ray(p + Vector3.up * 3f, Vector3.down);
  26.  
  27.             if (Physics.Raycast(ray, out var hit2))
  28.                 point = hit2.point;
  29.             else
  30.                 point = transform.position;
  31.         }
  32.  
  33.         Debug.DrawLine(transform.position + Vector3.up, point, Color.green);
  34.     }
  35.  
  36.     private void OnDrawGizmos()
  37.     {
  38.         Gizmos.color = Color.green;
  39.         Gizmos.DrawSphere(transform.position + Vector3.up, 0.075f);
  40.         Gizmos.color = Color.red;
  41.         Gizmos.DrawSphere(point, 0.05f);
  42.     }
  43.     #endregion
  44. }
  45.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement