Director
Director은 Timeline을 설정하는 컴포넌트라고 보면 된다.
https://docs.unity3d.com/kr/2018.4/Manual/class-PlayableDirector.html
Playable Director 컴포넌트 - Unity 매뉴얼
Playable Director 컴포넌트는 타임라인 인스턴스와 타임라인 에셋 사이의 링크를 저장합니다. Playable Director 컴포넌트는 타임라인 인스턴스가 언제 재생되고 타임라인 인스턴스가 어떻게 시계를 업
docs.unity3d.com
playable에는 Timeline을 넣으면 된다
TileLine은 우클릭 create-Timeline 으로 만든다
Bindings는 우측 인스펙터에서 건들필요없이 Timeline에 들어가면 된다
시작할때 보여지는 타임라인
길이가 길어서 전부다 올리진 못하겠고, 보스룸 씬만 보기좋게 보자면 이렇게 만들었다.
모든 퀘스트를 클리어시 보여지는 타임라인
보스룸
빨리감기를 했는데 이런느낌이다.
카메라를 시네머신카메라를 여러개 붙이는방법이 아니라 다른 여러방법도 있다.
그 중 Dolly Track쓴 예시는 이런느낌
Follow를 설정해두고 트랙위를 이동시키면 이런 느낌으로 연출이 가능하다.
스크립트
우선 CutSceneManager
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Playables;
public enum CutSceneType
{
startGame,
BossRoom
}
public class CutSceneManager : Singleton<CutSceneManager>
{
[Header("UI")]
public GameObject questManager;
public GameObject QuestCanvas;
public GameObject HpCanvas;
[Header("Camera")]
public GameObject cutSceneCamera;
public GameObject PlayerCamera;
[Header("CutScene")]
public GameObject[] directors;
[Header("ETC")]
[SerializeField] private CutSceneType curCutSceneType;
void Start()
{
StartCutScene(CutSceneType.startGame);
}
// 컷 씬 시작
public void StartCutScene(CutSceneType _cutSceneType)
{
curCutSceneType = _cutSceneType;
GameManager.Instance.ChangeGameState(GameState.CutScene, true);
PlayerCamera.SetActive(false);
cutSceneCamera.SetActive(true);
directors[(int)_cutSceneType].SetActive(true);
}
// 컷 씬이 끝날 때 시그널로 호출
public void EndCutScene()
{
GameManager.Instance.ChangeGameState(GameState.CutScene, false);
PlayerCamera.SetActive(true);
cutSceneCamera.SetActive(false);
directors[(int)curCutSceneType].SetActive(false);
StartQuest(curCutSceneType);
}
// 컷 씬이 끝나면서 퀘스트 시작
public void StartQuest(CutSceneType _cutSceneType)
{
QuestManager.Instance.StartQuest(_cutSceneType);
}
}
컷 씬은 2가지 타입만 만들었다.
시작할 때 자동 실행되는 StartGame과 모든 퀘스트를 끝내면 보스전이 가능하다는걸 알리는 BossRoom
그리고 시그널을 사용하려면 2가지 스크립트가 필요하다.
public class CutSceneController : MonoBehaviour, INotificationReceiver
{
public void OnNotify(Playable origin, INotification notification, object context)
{
EndMarker endMarker = notification as EndMarker;
if(endMarker!=null)
{
endMarker.curSceneCamera.SetActive(false);
endMarker.mainCamera.SetActive(true);
}
}
}
public class EndMarker : Marker
{
public GameObject mainCamera;
public GameObject curSceneCamera;
public PropertyName id { get { return new PropertyName(); } }
}
이 두개의 스크립트로 마커에 원하는 스크립트를 집어넣을 수 있다.
타임라인에 우클릭을 하면 이렇게 뜬다
원래 트랙이 이렇게 많지않은데
https://assetstore.unity.com/packages/tools/default-playables-95266
Default Playables | 도구 | Unity Asset Store
Get the Default Playables package from Unity Technologies and speed up your game development process. Find this & other 도구 options on the Unity Asset Store.
assetstore.unity.com
이 에셋으로 여러가지 추가가 가능하다.
위에 사진중 시작할 때 컷씬을 실행해보면 이렇게 텍스트가 같이 나오도록 된다 ↓
참고한 것들
타임라인을 처음 배울때 이영상으로 배웠다.
https://www.youtube.com/watch?v=4ey7H8llF_o&t=196s
처음부터 끝까지 만드는걸 보여줘서 보기편했다.
https://charotiti9.github.io/devlog/Timeline-02.html
타임라인🎬 02 - 트랙과 클립
애니메이션 및 튜토리얼 제작에 유용한 유니티 타임라인에 대해 알아본다. 두번째 포스팅에서는 트랙과 클립을 다루는 방법을 애니메이션 트랙 하나로 설명한다.
charotiti9.github.io
이 블로그는 전체적으로 도움됐다.
'유니티_일기 > 3D_RPG!' 카테고리의 다른 글
3D RPG 만들기! (14) GameManager (0) | 2023.10.21 |
---|---|
3D RPG 만들기! (13) 보스 만들기 (스킬 구현 - particle 충돌) (0) | 2023.10.21 |
3D RPG 만들기! (11)텔레포트 (0) | 2023.10.19 |
3D RPG 만들기! (10) 퀘스트 길안내 만들기 (0) | 2023.10.19 |
3D RPG 만들기! (9) 퀘스트 (0) | 2023.10.19 |
댓글