본문 바로가기
Unity 3D

Unity 3D 엔진 기초 (9) MainCamera의 플레이어 따라가기

by 연꿈술사 2023. 8. 14.

안녕하세요 연꿈술사입니다. 오늘은 우리가 게임을 플레이 했을 때 자주 겪어본 플레이어를 따라다니는 MainCamera를

코드로 구현해 보는 것을 해보려고 합니다. 단순히 MainCamera를 PlayerObject에 집어넣을 수도 있겠지만 그건 우리가

원하는 동작이 아닐 것입니다.

 

플레이어가 이동함에 따라 카메라가 이동하려면 일단 플레이어의 위치를 카메라가 받아와야겠죠? 하지만 Update문에서

이동하게 될 플레이어를 동시에 카메라가 받아버리면 움직임 사이에 약간의 불일치나 지연이 생기는 경우가 있습니다.

그로 인해 우리는 LateUpdate문에서 플레이어의 위치를 받으면 좋겠습니다.

 

아래는 예시문입니다.

[SerializeField]
    Transform playerTransform; // 플레이어의 Transform 컴포넌트를 연결
    [SerializeField]
    Vector3 offset = new Vector3(0, 5f, -10f); // 카메라와 플레이어 간의 거리와 높이 설정

    private void LateUpdate()
    {
        // 플레이어의 위치와 위에서 정의한 offset 값을 더하여 카메라의 새 위치를 계산
        Vector3 newPosition = playerTransform.position + offset;

        // 카메라의 위치를 새로운 위치로 설정
        transform.position = newPosition;

        // 카메라가 플레이어를 계속 바라보게 함
        transform.LookAt(playerTransform);
    }

이렇게 받으니 플레이어를 잘 따라다닙니다. 플레이어가 이동함에 따라 바로바로 움직여주는 카메라를 볼 수 있습니다.

 

좀더 부드러운 연출을 원하시면 Vector3의 Lerp함수를 이용하거나 SmoothDamp 함수를 사용해 좀 더 부드럽게 따라가는

카메라를 연출해 줄 수도 있습니다.

 

오늘은 간단하지만 주인공이 있는 게임이라면 필수인 Player를 따라 이동하는 Camera를 Unity를 통해 구현하는 법을 알아보았습니다. 

 

매일 새로운 정보를 올리니 확인해보시기 바랍니다. 연꿈술사였습니다.

댓글