반응형
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
반응형
댓글