유니티에서 화면 드래그하면 그 방향으로 물체 회전하는거 구현하고 싶은데
chat gpt에서 물어본거랑 유튜브 알려주는거 전부 따라해 봤는데 뭔가 전부 마음에 안듬
그나마 chat gpt가 한게 가장 괜찮은데
public class DragToRotate : MonoBehaviour
{
public float rotationSpeed = 5f;
private bool isDragging = false;
private Vector3 lastMousePosition;
private bool justStartedDragging = false;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
isDragging = true;
lastMousePosition = Input.mousePosition;
justStartedDragging = true; // 다음 프레임에 회전 건너뜀
}
else if (Input.GetMouseButtonUp(0))
{
isDragging = false;
}
if (isDragging)
{
if (justStartedDragging)
{
// 마우스를 누른 직후에는 움직임 무시
justStartedDragging = false;
lastMousePosition = Input.mousePosition;
return;
}
Vector3 delta = Input.mousePosition - lastMousePosition;
float rotationX = delta.y * rotationSpeed * Time.deltaTime;
float rotationY = -delta.x * rotationSpeed * Time.deltaTime;
transform.Rotate(Vector3.up, rotationY, Space.World);
transform.Rotate(Vector3.right, rotationX, Space.World);
lastMousePosition = Input.mousePosition;
}
}
}
설명은 잘 못하겠는데 이 코드가 뭔가 이상함 일단 원하는 대로 작동하긴 하는데 뭔가 끊기는 느낌도 들고 부자연 스러운 느낌도 듬
괜찮은 코드나 저 코드에서 수정할 부분 알려 줄 수 있음?
if(justStartedDragging)이랑 if(isDragging) 안에 있는 lastMousePosition 초기화하는 거 주석 처리 해보셈