Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- public class TestRay : MonoBehaviour
- {
- #region SerializeFields
- [SerializeField] private float maxDistance = 5f;
- #endregion
- #region Private
- private Vector3 point = Vector3.zero;
- #endregion
- #region Unity methods
- private void Update()
- {
- var mousePosition = Input.mousePosition;
- var ray = Camera.main.ScreenPointToRay(mousePosition);
- if (Physics.Raycast(ray, out var hit))
- point = hit.point;
- else
- {
- var worldPoint = Camera.main.ScreenToWorldPoint(new Vector3(mousePosition.x, mousePosition.y, Camera.main.farClipPlane));
- var p = transform.position + (worldPoint - transform.position).normalized * maxDistance;
- ray = new Ray(p + Vector3.up * 3f, Vector3.down);
- if (Physics.Raycast(ray, out var hit2))
- point = hit2.point;
- else
- point = transform.position;
- }
- Debug.DrawLine(transform.position + Vector3.up, point, Color.green);
- }
- private void OnDrawGizmos()
- {
- Gizmos.color = Color.green;
- Gizmos.DrawSphere(transform.position + Vector3.up, 0.075f);
- Gizmos.color = Color.red;
- Gizmos.DrawSphere(point, 0.05f);
- }
- #endregion
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement