using UnityEngine;
|
|
public class ChairController : MonoBehaviour
|
{
|
public float minX = -2f; // ÃÖ¼Ò X À§Ä¡
|
public float maxX = 2f; // ÃÖ´ë X À§Ä¡
|
[Range(0.01f, 0.1f)]
|
public float Sensitivity = 0.1f;
|
|
private bool isDragging = false;
|
private Camera mainCamera;
|
private Vector3 lastMousePosition;
|
private Vector3 moveDirection;
|
|
void Start()
|
{
|
mainCamera = Camera.main;
|
}
|
|
public void OnDrag()
|
{
|
isDragging = true;
|
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()
|
{
|
isDragging = false;
|
}
|
|
void Update()
|
{
|
if (isDragging)
|
{
|
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);
|
|
lastMousePosition = Input.mousePosition;
|
}
|
}
|
}
|