이거 맞음?


--


public class CameraControl : MonoBehaviour

{

    public float speed = 200f;  // 마우스 속도

    private float xRotate = 0f;   // 상하제한

    private float yRotate = 0f;   // 좌우제한


    void Start()

    {

        Cursor.lockState = CursorLockMode.Locked; // 버그방지

        yRotate = transform.eulerAngles.y;

    }


    void Update()

    {

        // 마우스 위치에 속도 더하기

        float mouseX = Input.GetAxis("Mouse X") * speed * Time.deltaTime;

        float mouseY = Input.GetAxis("Mouse Y") * speed * Time.deltaTime;


        // 카메라에 적용

        xRotate -= mouseY;

        xRotate = Mathf.Clamp(xRotate, -90f, 90f);

        yRotate += mouseX;

        transform.localRotation = Quaternion.Euler(xRotate, yRotate, 0f);

    }

}


--


public class CubeObj : MonoBehaviour

{

    public Transform cameraTransform; // 메인카메라

    private bool isHeld = false;  // 잡았는지 트리거


    public float distance = 2.5f; // 잡히는 위치

    public float speed = 0.2f;    // 가속도

    public float moveSpd = 20f;   // 따라붙는 최대속도

    public float rotateSpd = 10f; // 회전속도


    private Vector3 currentVelocity;


    void OnMouseDown()

    {

        isHeld = !isHeld;


        if (TryGetComponent(out Rigidbody rb))

        {

            rb.isKinematic = isHeld;

        }

    }

    void LateUpdate()

    {

        if (!isHeld || cameraTransform == null) return;


        // 업데이트는 항상 마지막에

        MoveTarget();

        RotateTarget();

    }


    void MoveTarget()

    {

        // 위치 게산

        Vector3 targetPosition = cameraTransform.position + (cameraTransform.forward * distance);

        transform.position = Vector3.SmoothDamp(

            transform.position,

            targetPosition,

            ref currentVelocity,

            speed,

            moveSpd

        );

    }


    void RotateTarget()

    {

        // 오브젝트가 카메라와 같은 방향을 보게 함

        transform.rotation = Quaternion.Slerp(transform.rotation, cameraTransform.rotation, Time.deltaTime * rotateSpd);

    }

}


--



카메라에 CameraControl 컴포넌트로 넣어주고


오브젝트에 CubeObj 컴포넌트로 넣어주면 된다