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