Mouse3D.cs 1000 B

123456789101112131415161718192021222324252627282930313233
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class Mouse3D : MonoBehaviour {
  5. public static Mouse3D Instance { get; private set; }
  6. [SerializeField] private LayerMask mouseColliderLayerMask = new LayerMask();
  7. private void Awake() {
  8. Instance = this;
  9. }
  10. private void Update() {
  11. Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  12. if (Physics.Raycast(ray, out RaycastHit raycastHit, 999f, mouseColliderLayerMask)) {
  13. transform.position = raycastHit.point;
  14. }
  15. }
  16. public static Vector3 GetMouseWorldPosition() => Instance.GetMouseWorldPosition_Instance();
  17. private Vector3 GetMouseWorldPosition_Instance() {
  18. Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  19. if (Physics.Raycast(ray, out RaycastHit raycastHit, 999f, mouseColliderLayerMask)) {
  20. return raycastHit.point;
  21. } else {
  22. return Vector3.zero;
  23. }
  24. }
  25. }