Unity

[Unity] 특정 게임오브젝트 기준으로 카메라 움직이기

CommitGuy 2024. 11. 29. 15:54

유니티에서 특정 게임오브젝트를 기준으로 카메라를 회전시키는 방법

Cube를 중심으로 회전하는 카메라

 

Mouse의 X축 데이터를 가져온다

xRotateMove = Input.GetAxis("Mouse X") * Time.fixedDeltaTime * rotateSpeed;

가져온 X축 데이터에 Time.fixedDeltaTime을 곱해주고 이동속도인 rotateSpeed float 값을 곱해준다

transform.RotateAround(targetPos, Vector3.up, xRotateMove);

Transform안에 RotateAround 함수를 사용해 기준점이 되는 게임오브젝트의 position을 기준으로 xRotateMove만큼 회전한다

 

transform.LookAt(targetPos);

 

회전하면서 카메라의 forward 방향(z 방향)은 회전하는 중심을 보게 한다

 

[전체코드]

public class RotateAround : MonoBehaviour
{
    [SerializeField] private Transform targetObj;
    [SerializeField] private float rotateSpeed = 500.0f;

    private float xRotateMove;


    private void FixedUpdate()
    {
        if (Input.GetMouseButton(0))
        {
            xRotateMove = Input.GetAxis("Mouse X") * Time.fixedDeltaTime * rotateSpeed;
            Vector3 targetPos = targetObj.position;
            transform.RotateAround(targetPos, Vector3.up, xRotateMove);
            transform.LookAt(targetPos);
        }
    }
}