Unity/Unity Study

유니티에서 여러 카메라를 사용하는 방법

pnltoen 2022. 7. 16.
반응형

Multi Camera

Unity Technologies


여러 카메라 사용하기

 

유니티 화면 내에서 1인칭에서 3인칭으로 전환을 하거나, 한 화면에 여러 화면 렌더링이 필요한 경우가 있습니다.

두개 이상의 카메라 사용 문서에서 기술되어 있듯이 아래와 같이 public Camera를 사용하고 Camera를 넣어줌으로써 이를 해결할 수 있습니다.

 

using UnityEngine;

public class ExampleScript : MonoBehaviour {
    public Camera firstPersonCamera;
    public Camera overheadCamera;

    // Call this function to disable FPS camera,
    // and enable overhead camera.
    public void ShowOverheadView() {
        firstPersonCamera.enabled = false;
        overheadCamera.enabled = true;
    }
    
    // Call this function to enable FPS camera,
    // and disable overhead camera.
    public void ShowFirstPersonView() {
        firstPersonCamera.enabled = true;
        overheadCamera.enabled = false;
    }
}

 

따라서 특정 키(V)를 입력하면 화면이 전환되도록 구성할 수 있습니다. 추가적으로 우측 상단에 조그만한 뷰를 만들어서, 마치 운전 중 사이드 미러를 보듯이 1인칭으로 볼 때는 작게 3인칭 화면이, 3인칭으로 볼때는 작게 1인칭 화면이 나오도록 구성해보았습니다.

 

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

public class Cam_Manager : MonoBehaviour
{
    public Camera firstperson;
    public Camera thirdperson;
    bool cam_check = false;
    public float width;
    public float height;


    private void Awake()
    {
        firstperson.enabled = true;
        thirdperson.enabled = true;
        Showthirdperson();
    }
    
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.V) && cam_check == false)
        {
            Showfirstperson();
            cam_check = true;
        }

        else if (Input.GetKeyDown(KeyCode.V) && cam_check == true)
        {
            Showthirdperson();
            cam_check = false;
        }
    }

  
    void Showfirstperson()
    {      
        thirdperson.rect = new Rect(width, width, height, height);
        firstperson.rect = new Rect(0, 0, 1, 1);
        thirdperson.depth = 1;
        firstperson.depth = -1;
    }

    void Showthirdperson()
    {
        firstperson.rect = new Rect(width, width, height, height);
        thirdperson.rect = new Rect(0, 0, 1, 1);
        thirdperson.depth = -1;
        firstperson.depth = 1;
    }
}

 

Code Review

rect와 depth가 있습니다. rect의 경우에는 전체 화면이 1일 때 어느 곳에 렌더링을 할 것인지 설정할 수 있고 depth는 우선순위를 결정합니다. 여러 카메라를 사용할 경우, 작게 렌더링 되는 카메라의 depth를 큰 카메라 보다 값이 크게 설정해야 합니다. 따라서 3인칭일 때는 3인칭 카메라는 -1로 1인칭 카메라는 1로 설정하도록 하였습니다.

 

Result

 

 

 

반응형

댓글