시네머신

감사콩·2025년 11월 5일

유니티

목록 보기
10/29

서론

오늘은 유니티6 첫날이다
시네머신의 기본 사용법에 대해 공부해보자.



시네머신

유니티에서 지원하는 카메라 툴

이 툴에서 지원하는 기능에 대해 알아보도록 하겠다

설치

Window -> PackageManager -> Unity Registry -> Cinemachine -> Install

Virtual Camera(6.0에선 Cinemachine Camera)

하이어라키 -> 시네머신 -> Virtual Camera

Priority
우선도(버츄얼 카메라 끼리의)
LookAt Follow 둘 다 카메라가 특정 객체를 쫓아가는 것

Blend List Camera

여러 가상 카메라를 대기시키고

순서대로 시점 변환하는 기능
Blend in 에서 시점 변환 방식도 정할 수 있음

Clear Shot Camera

주시해야 할 오브젝트가 다른 오브젝트(벽, 지형)등에 가려졌을 때
주시대상을 볼 수 있는 카메라로 자동 전환

방해물(오브젝트)을 원하는 레이어로 설정하고

여기에 지정

Dolly Cam

가상의 트랙을 지정하고, 카메라가 지정 트랙 위에서만 움직이도록 제어
이건 교안 보자
카트라이더 골인 이후 카메라는 안 따라가고
카트만 앞으로 나아가는 그런 기능 구현할 때 쓸 수 있을 듯
Dolly Cart 활용하면 원하게 루프할 수도 있음

FreeLook Camera

RPG에서의 자유시점

Top Middle Bottom 설정 필요

Target Group Camera

"두 대상 사이의 거리에 따라 카메라가 자동으로 줌 인/아웃"
프레이밍(Framing) 연출에 특화
격투게임 등에서 활용 가능

만들어보고 싶어진 거 : 다크소울 타겟팅

버츄얼 카메라의 LookAt을 적으로
Follow Body를 플레이어로 지정

화면의 중앙에서 가장 가까운
Enemy Tag 를 룩앳에 넣을 수 있도록 스크립팅하면 될 듯

과제

인풋시스템과 시네머신을 활용한
간단한 공포게임 틀 제작

  1. Player 1인칭 시점 WASD 이동
    1-1. 단 AD는 시점 이동을 제어
  2. 유령은 1인칭 시점에선 안 보이고 CCTV 1, 2에서만 확인 가능
  3. 닿았을 시 유저 사망

1. Player 이동 로직

일단 1번에서 AD로 시점 바꾸는 거에서 바로 막혔다.

그래서 Player Actions에서
WASD 중
AD:좌,우 이동 바인딩을 그냥 빼버리고
Rotate 를 새로 제작하기로 결정

더 좋은 방법이 있을 지 여쭤봐야겠다.

Rotate 추가하고
플레이어 움직임 관리 cs도 OnRotate 추가

rotateInput에 저장하고 Update에서 회전 처리할 때 곱해주기

회전의 처리는 프레임 값이 높은 Update에 넣고

실질적인 이동은 FixedUpdate에 배치

2. Ghost 생성

유저의 시야엔 잡히지 않는 Ghost 생성하기

일단 Ghost 만들고
레이어도 Ghost로 제작하여 트리거 켜 두기.

플레이어의 시야가 될 Main Camera를 플레이어의 자식 객체로 넣어버리고
Main Camera의 Culling Mask에서 Ghost 레이어 제외

Game 화면에서 플레이어 시야에 안 잡히게 제작 성공

3. CCTV 제작

유령이 보이는 CCTV 2개 제작

일단 화면부터 만들어보자

프로젝트 -> Create -> Rendering -> RenderTexture
x2

각 위치에 제작하고 Culling Mask에서 전체 선택

이제 스크립트를 작성해보자
1, 2번을 누르고 있으면 각 카메라로 시점 변환

간단하게 작성했는데 이 시점에서 일단 에러 발생.

문제

아 맞다
유니티 6로 넘어가면서 New Input System 패키지를 사용하니까
입력 방식의 차이가 생겨 기존 방식으로는 작동하지 않는다.

따라서 얘도 액션 바인딩 추가

UI쪽에 추가
액션타입은 Value

Player에 담긴 Player Input 가서 수정하자

Player 말고 UI로 이동

오브젝트는 Canvas(스크립트가 달린 경로)로 설정

4. 유령 충돌 구현

유령에 충돌 시 플레이어 사망하도록 구현

단순하게 구현

플레이어에 태그도 추가해주기

유령에게 달아주고 테스트 시작

테스트 시작

시작하자마자 문제 발생

CCTV 1, 2 화면이 출력된 채로 시작하고 있다

슥 추가해두고 인스펙터도 비활성화 시켜두겠다

다시 테스트 해보면??

완성

  1. 플레이어 시야에선 Ghost(Cube) 안 보이는 거 확인
  2. CCTV 1, 2번에선 출력되는 거 확인
  3. Player가 Ghost에 접촉 시 비활성화 되는 거 확인



마무리

일단 기본 활용법을 머릿속에 넣고, 응용은 나중에 생각해보기로
당장 떠오르는 건 엘든링 타겟팅 시스템?
이건 시간 될 때 한 번 만들어보자

profile
안녕하시와요

0개의 댓글