열차 목업의 내부 확인용 프로젝트
smchoi
2024-07-24 ec231f4110c782d44ea2820a1eaaa7a5711c6f16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//using UnityEngine;
//using UnityEngine.EventSystems;
//using UnityEngine.UI;
 
 
//public class MouseControlled3DJoystick : MonoBehaviour
//{
 
//    public Transform joystickHandle;
//    public float joystickRange = 0.05f; // ¹ÌÅÍ ´ÜÀ§
//    public LayerMask joystickLayer;
 
//    private Vector3 initialHandlePosition;
//    private Vector3 currentHandlePosition;
//    private bool isDragging = false;
//    private Camera mainCamera;
 
//    private void Start()
//    {
//        initialHandlePosition = joystickHandle.localPosition;
//        currentHandlePosition = initialHandlePosition;
//        mainCamera = Camera.main;
//    }
 
//    private void Update()
//    {
//        if (Input.GetMouseButtonDown(1))
//        {
//            Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
//            RaycastHit hit;
 
//            if (Physics.Raycast(ray, out hit, Mathf.Infinity, joystickLayer))
//            {
//                if (hit.transform == joystickHandle)
//                {
//                    isDragging = true;
//                }
//            }
//        }
 
//        if (Input.GetMouseButtonUp(1))
//        {
//            isDragging = false;
//            // Á¶À̽ºÆ½À» ¿øÀ§Ä¡·Î µÇµ¹¸³´Ï´Ù
//            joystickHandle.localPosition = initialHandlePosition;
//            currentHandlePosition = initialHandlePosition;
//        }
 
//        if (isDragging)
//        {
//            Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
//            Plane plane = new Plane(joystickBase.up, joystickBase.position);
 
//            float distance;
//            if (plane.Raycast(ray, out distance))
//            {
//                Vector3 hitPoint = ray.GetPoint(distance);
//                Vector3 localHitPoint = joystickBase.InverseTransformPoint(hitPoint);
 
//                // XZ Æò¸é¿¡¼­ÀÇ À̵¿À» Á¦ÇÑÇÕ´Ï´Ù
//                Vector2 joystickPosition = new Vector2(localHitPoint.x, localHitPoint.z);
//                joystickPosition = Vector2.ClampMagnitude(joystickPosition, joystickRange);
 
//                Vector3 newPosition = new Vector3(joystickPosition.x, initialHandlePosition.y, joystickPosition.y);
//                joystickHandle.localPosition = newPosition;
//                currentHandlePosition = newPosition;
//            }
//        }
//    }
 
//    public Vector2 GetInputVector()
//    {
//        Vector2 input = new Vector2(
//            currentHandlePosition.x - initialHandlePosition.x,
//            currentHandlePosition.z - initialHandlePosition.z
//        );
//        return input / joystickRange;
//    }
//}