Camera

한결·2021년 9월 13일
0

현재 Scene View에서 보는 화면을 카메라의 transfrom으로 적용하기 위해서 사용하는 단축키
: ctrl + shift + F

Camera 오브젝트 생성시 Audio Listener 컴포넌트가 자동으로 생성되는데 카메라가 2대 이상일 시 Audio Listener도 두 개 이상이 된다.
이러한 경우 한 개만 동작하도록 제어 혹은 제거 해야함
(다수의 Audio Listener 사용시 경고 메세지 출력)

카메라의 시점 3가지

고정 카메라
(1인칭 객체와 독립적)

1인칭 카메라
(1인칭 객체의 자식요소. transfrom은 원점에서 시작)

wide 1인칭 카메라
(1인칭 객체 뒤에 배치해 3인칭 시점 구현)

1인칭 시점에서 카메라 회전(마우스)

private float h = 0.0f;
private float v = 0.0f;

    void Update()
    {
        h += speedH * Input.GetAxis("Mouse X");
        v -= speedV * Input.GetAxis("Mouse Y"); //마우스가 위를보면 값이 -이기 때문에 값을 빼줌

        transform.eulerAngles = new Vector3(v, h, 0.0f);

    }

실시간 카메라 시점 변경

public 배열로 다수의 카메라를 받은 다음 SetActive함수를 사용하여 하나의 카메라만 활성화 하는 방법으로 시점 변경

 public GameObject[] cameras; 
    void Update() 
    { 
        if (Input.GetKeyDown(KeyCode.Alpha1)) 
        { 
            cameras[0].SetActive(true); 
            cameras[1].SetActive(false); 
            cameras[2].SetActive(false); 
        } else if (Input.GetKeyDown(KeyCode.Alpha2)){ 
            cameras[0].SetActive(false); 
            cameras[1].SetActive(true); 
            cameras[2].SetActive(false); 
        } else if (Input.GetKeyDown(KeyCode.Alpha3)){ 
            cameras[0].SetActive(false); 
            cameras[1].SetActive(false); 
            cameras[2].SetActive(true); 
        } 
    }

멀티 카메라 렌더링

viewport rect

미니맵, 거울, FPS의 Zoom 등의 기능을 구현가능.
카메라에 있는 Viewport rect값을 변경하여 사용가능.
x, y는 시작좌표. w, h는 그려지는 뷰의 크기
Depth값을 통해 렌더링 우선순위 설정가능
(작은 수가 먼저)

Render Texture

동적으로 변하는 카메라의 출력을 텍스터로 사용.
3D 공간에서 출력 가능함.

객체 생성

  • 카메라 생성
  • Render Texture 생성
  • Material 생성
  • Quad 생성(출력할 오브젝트)

연결

  • 카메라의 Target Texture를 Render Texture로 설정
  • Material의 texture를 Render Texture로 설정
  • Quad의 Material을 설정

거울의 경우 좌우 반전이 나타나기 때문에 Quad(거울)의
Scale X값을 -로 수정해 주어야 함

줌 기능의 경우 좌우, 상하 반전이 발생하기 때문에
Scale X, Z값을 -로 반전.
rotation의 x값을 -90을 주어야함.
FOV값을 조절하여 확대, 축소 가능

profile
개발

0개의 댓글