-
Unity Cinemachine Confiner change - 시네머신 confiner 변경쾌락없는 책임 (공부)/Unity 2021. 7. 20. 23:03반응형
서론
제목 보면 무슨 개소리지 싶지만 유니티 내에서 제공하는 시네머신의 속성중 Confiner에서 Bounding Shape 2D를 스크립트에서 제어하는 방법이다. 이를 이용하면 시네머신 1개의 영역을 런타임중 동적으로 할당할 수 있다.
코드
using System.Collections; using System.Collections.Generic; using UnityEngine; using Cinemachine; public class ConfinerChange : MonoBehaviour { public static ConfinerChange confinerChangeInstance; public static CinemachineConfiner confiner; void Awake() { confinerChangeInstance = this; confiner = FindObjectOfType<CinemachineConfiner>(); } public static void CameraBorder(Collider2D newConfiner) { confiner.m_BoundingShape2D = newConfiner; } }
위 FindObjectOfType가 정말 안좋은거지만 일단 구현하는게 우선이라 넣어서 만들었다. m_BoundingShape2D 를 변경함으로서 시네머신의 영역을 동적으로 할당할 수 있는 것이다
꼴을 보아라
그런데 이게 정말 보고 싶었는가?
다른 게임들처럼 스무스한 전환을 바랬지만 막상 만져보니 딱딱 변경되는 괴랄한 연출이 완성되었다. 카메라 메모리좀 아껴보겠다가 유저들 다 빠져나갈 연출이란 말이다.
그래서 생각해본건 카메라를 2개를 두고 번갈아가가면서 전환하는 방식을 사용해보기로 했다.
일단 원하는건 위와 같은 카메라 움직임이다
using System.Collections; using System.Collections.Generic; using UnityEngine; using Cinemachine; public class CameraManager : MonoBehaviour { public static CameraManager camManager; public static bool isCam1On; [SerializeField] GameObject cam1; [SerializeField] GameObject cam2; public CinemachineConfiner cam1Confiner; public CinemachineConfiner cam2Confiner; void Awake() { camManager = this; isCam1On = true; } public static void ChangeCam(Collider2D border) { if(isCam1On) { camManager.cam2Confiner.m_BoundingShape2D = border; isCam1On = false; camManager.cam2.gameObject.SetActive(true); camManager.cam1.gameObject.SetActive(false); } else { camManager.cam1Confiner.m_BoundingShape2D = border; isCam1On = true; camManager.cam1.gameObject.SetActive(true); camManager.cam2.gameObject.SetActive(false); } } }
싱글톤으로 만들어진 위 오브젝트를 gamemanager처럼 사용하니 위 화면같은 연출이 잘 되었다. 여전히 카메라가 느리다는 단점이 있는것 빼고?
반응형'쾌락없는 책임 (공부) > Unity' 카테고리의 다른 글
유니티 드래그앤 드롭, UI / 오브젝트 드래그앤 드롭 (1) 2021.09.08 유니티 한방향 발판 만들기 - One Way Platform (0) 2021.08.05 유니티 Vector2.Reflect로 오브젝트 반사하기 (입사각, 반사각) (0) 2021.07.04 유니티 2D - 말하는 NPC 만들기, 최적화 (0) 2021.05.19 유니티 2D 아이템 드랍 오브젝트 폴링으로 구현하기 (0) 2021.05.08