유니티에서 마우스 움직임에 따라 카메라 움직이기

심지태
∙∙조회 5
csharp
using System.Linq.Expressions;
using UnityEngine;

public class CameraRotation : MonoBehaviour
{
    [SerializeField] GameObject cameraRoot;
    [SerializeField] private float rotateSpeed;
    [SerializeField] private float topClamp;
    [SerializeField] private float bottomClamp;
    [SerializeField] private bool invertXAxis;

    private Vector2 lookInput;
    private float targetX;
    private float targetY;

    void Update()
    {
        float x = Input.GetAxis("Mouse X");
        float y = Input.GetAxis("Mouse Y");

        lookInput = new Vector2(x, y);

        CameraRotate();
    }

    private void CameraRotate()
    {
        // 좌우 회전
        targetY += lookInput.x * rotateSpeed;

        // 상하 회전
        if (invertXAxis)
            targetX += lookInput.y * rotateSpeed;
        else
            targetX -= lookInput.y * rotateSpeed;

        // 상하 회전을 제한
        targetX = Mathf.Clamp(targetX, bottomClamp, topClamp);
        targetY = Mathf.Clamp(targetY, float.MinValue, float.MaxValue);

        // 좌우회전 값을 플레이어에게 적용
        transform.rotation = Quaternion.Euler(0f, targetY, 0f);

        // 상하회전 값을 카메라 루트에 적용
        cameraRoot.transform.localRotation = Quaternion.Euler(targetX, 0, 0);
    }
}

3D 환경에서 마우스 움직임에 따라서 카메라를 회전시키는 코드.
좌우 회전은 플레이어를 카메라에 따라 회전시키고, 상하 회전은 카메라 축만 조정한다.