게임 씬에서 화면에 보여지는 부분은 Camera 오브젝트를 이용해 볼 수 있다. 꼭 한 개 이상의 Camera가 존재해야한다.

이 글에서는 이동하는 Player의 오브젝트를 따라서 카메라도 이동하는 기능을 구현해 볼 것이다. 

원리는 간단하다. 화면에 보여질 오브젝트를 원하는 위치에 카메라를 놓은 상태로 두 오브젝트 간의 Vector3 값의 차이를 이용해 Update문으로 위치를 바꿔준다.

 

CameraController.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraController : MonoBehaviour
{
    private Camera cam;
    public GameObject _player = null;

    public Vector3 _delta = new Vector3(0.0f, 6.0f, -6.0f);
    // 플레이어와 카메라 사이의 거리를 저장하여 시점을 설정한다.
    void Start()
    {
        cam = Camera.main; // main camera를 가져온다.
        _player = GameObject.Find("TestCube"); // TestCube 객체를 Player로 설정한다.
    }

    // Update is called once per frame
    void LateUpdate() // 가장 마지막에 실행되는 함수로, 플레이어의 위치가 변경된 후
    {				  // 실행되기 때문에 자연스러운 화면 연출이 가능하다.
        cam.transform.position = _player.transform.position + _delta;
        // 업데이트가 될 때마다 camera의 위치를 플레이어위치 + 설정값으로 변경한다
    }
}

 

main camera에 해당 코드를 붙여주면 된다.

'UNITY' 카테고리의 다른 글

UNITY - UI 자동화(1) - 인벤토리 구현  (0) 2024.01.11
UNITY - UIManager  (2) 2024.01.11
UNITY - Camera - 3인칭 시점(2)  (4) 2024.01.08
UNITY - InputManager  (1) 2024.01.08
UNITY - Manager  (1) 2024.01.03

+ Recent posts