Unity - 타임라인

땡구의 개발일지·2025년 6월 10일

Unity마스터

목록 보기
37/78
post-thumbnail

시네마틱 처럼 장면을 연출하기 위한 기능.

개요

정해진 시간과 플로우에 적절히 원하는 장면을 연출할 수 있게하는 기능이다. 인게임 컷씬으로 불리는 것들이 해당 기능을 통해 구현된다

응용

게임의 씨네마틱 시네머신과 같이 타임라인은 게임엔진 내의 환경을 원하는 순간에 의도적으로 제어해서 자연스럽게 진행되는 스토리를 연출하는데 도움을 줄 수 있습니다. 실습을 통해 타임라인을 제어해보는 시간을 가져보도록 합시다.


설치

패키지 매니저에서 Timeline으로 검색하면 나온다. Cinemachine 또한 설치하도록 하자.


생성

타임라인 탭


해당 경로로 타임라인 탭을 추가할 수 있다. 먼저, BossTimeline 이름으로 빈 오브젝트를 생성한다.

Playable Director를 추가한다

타임라인 에셋 생성

열린 타임라인 탭에서 Create를 누르면 타임라인 에셋을 생성할 수 있다. BossTimeline 오브젝트를 먼저 하이라키 창에서 클릭해 활성화 해야한다. 생성한 후, 방금 전에 만든 Playerable Director에 참조시킨다

트랙 생성


위와 같이 원하는 트랙을 생성할 수 있다. 각 트랙의 기능은 이름이 직관적이라 생략한다. 보통 애니메이션, 오디오, 시그널 트랙을 많이 쓰게 된다. Cinemachine Track을 생성하자


편집


기존의 동영상 툴들이랑 작업 방식이 매우 비슷하다. 트랙을 서로 겹치면, 자동으로 페이드 인/아웃 이 된다. 축에 해당하는 숫자는 프레임이다.


Playable Director에서 Cinemachine TrackMain Camera로 설정한다. 재생하면 편집한 대로 타임라인이 재생된다


재생

트리거

플레이어가 특정 위치에 도달했을 때, 타임라인이 재생될 수 있도록 트리거 영역을 정한다음, 이벤트로 타임라인을 재생시킨다. 타임라인이 재생되는 동안에는 플레이어 입력을 막는다.

이벤트

TriggerEvent라는 이름으로 3D Sphere 오브젝트를 생성한 후, 트리거로 설정한다

이벤트를 수행하는 스크립트를 작성 후, OnTriggerEnter() 이벤트 함수에서 타임라인이 재생 될 수 있게 해본다.

BossTimeline 오브젝트를 참조한 후, Play() 함수를 등록하면 된다

Play On Awake 옵션을 체크해제 한다

이제 프로그램을 실행한 후, 해당 트리거 영역에 진입하면 타임라인이 재생된다

만약, 스킵 기능을 구현하고자 한다면 TriggerEvent 스크립트에서 OnTriggerStay()에서 키 입력을 일정시간 Hold시 기능을 수행하게 조건문을 작성한다. 그리고 이벤트에 Stop() 함수를 추가하면 된다


애니메이션


위와 같이 애니메이션 클립을 애니메이션 트랙에 추가할 수 있다

문제점


애니메이션 추가 후, 재생해보면 몬스터가 플레이어 위치로 순간이동한다

오프셋


애니메이션이 시작될 때의 위치를 지정해줄 수 있다

애니메이션 트랙 설정


여기서 Apply Scene Offsets를 선택해야 제자리에서 애니메이션을 재생한다.


시그널

시그널 트랙

시그널 트랙을 추가한다. 원하는 시점에 특정 동작 수행을 시키는 이벤트 같은 것이다

시그널 리시버


위와같이 시그널 리시버를 만든다

그러면 하이라키 창에서 PlayerCharacter를 클릭해보면 Signal Receiver가 추가된 것을 확인할 수 있다

시그널 추가

  • 프로젝트 창에서 해당 경로로 시그널을 추가할 수 있다

시그널 편집


생성한 시그널을 타임라인의 시그널 트랙으로 끌고 가 배치할 수 있다.

시그널 리시버 편집


앞선 플레이어 캐릭터의 시그널 리시버에 위와같이 이벤트를 추가할 수 있다. 해당 기능을 통해 플레이어의 입력을 제한했다가 풀어줄 수 있다

profile
개발 박살내자

0개의 댓글