From ff74c0073046f0e086eb7d355950bda39937c92c Mon Sep 17 00:00:00 2001
From: smchoi <ws5260@naver.com>
Date: 수, 24 7월 2024 09:39:15 +0900
Subject: [PATCH] Fix : display 화면 변경

---
 Assets/ChairController.cs |   43 ++++++++++++++++++++++---------------------
 1 files changed, 22 insertions(+), 21 deletions(-)

diff --git a/Assets/ChairController.cs b/Assets/ChairController.cs
index d91dfe7..2cc90c1 100644
--- a/Assets/ChairController.cs
+++ b/Assets/ChairController.cs
@@ -4,17 +4,14 @@
 {
     public float minX = -2f; // 최소 X 위치
     public float maxX = 2f;  // 최대 X 위치
-
-    [Range(0.01f, 0.1f )]
+    [Range(0.01f, 0.1f)]
     public float Sensitivity = 0.1f;
 
-    private Vector3 offset;
-    private float startX;
     private bool isDragging = false;
     private Camera mainCamera;
+    private Vector3 lastMousePosition;
+    private Vector3 moveDirection;
 
-
-    
     void Start()
     {
         mainCamera = Camera.main;
@@ -22,9 +19,18 @@
 
     public void OnDrag()
     {
-        startX = transform.localPosition.x;
         isDragging = true;
-        offset = transform.localPosition - GetMouseWorldPos();
+        lastMousePosition = Input.mousePosition;
+
+        // 드래그 시작 시 이동 방향 결정
+        Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
+        Vector3 directionToChair = transform.position - ray.origin;
+        moveDirection = Vector3.Cross(ray.direction, Vector3.up).normalized;
+
+        if (Vector3.Dot(directionToChair, moveDirection) < 0)
+        {
+            moveDirection = -moveDirection;
+        }
     }
 
     public void OffDrag()
@@ -36,21 +42,16 @@
     {
         if (isDragging)
         {
-            Vector3 newPosition = GetMouseWorldPos() + offset;
-            float deltaX = newPosition.x - startX;
-            float originalX = transform.localPosition.x;
-            // X 축으로만 이동하며, 최소/최대 범위 내에서만 이동
-            float newX = Mathf.Clamp(originalX + deltaX * Sensitivity, minX, maxX);
+            Vector3 delta = Input.mousePosition - lastMousePosition;
+            float moveAmount = Vector3.Dot(delta, mainCamera.transform.right) * Sensitivity;
+
+            // 미리 결정된 이동 방향을 사용
+            float newX = transform.localPosition.x + moveDirection.x * moveAmount;
+            newX = Mathf.Clamp(newX, minX, maxX);
+
             transform.localPosition = new Vector3(newX, transform.localPosition.y, transform.localPosition.z);
 
-            startX = transform.localPosition.x;
+            lastMousePosition = Input.mousePosition;
         }
-    }
-
-    Vector3 GetMouseWorldPos()
-    {
-        Vector3 mousePoint = Input.mousePosition;
-        mousePoint.z = mainCamera.WorldToScreenPoint(transform.localPosition).z;
-        return mainCamera.ScreenToWorldPoint(mousePoint);
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0