-
유니티 2D 시네머신 사용기 - 맵 이동시, 카메라 전환, confiner change쾌락없는 책임 (공부)/Unity 2021. 3. 13. 22:29반응형
< 왜 시네머신인가? >
일단 게임 제작 과정에서 아래 기능을 하는 카메라가 필요했다.
1. 플레이어를 스무스하게 따라가는 카메라
2. 대신 맵 밖으로 벗어나지 못하는 카메라
위 기능을 이전에 Gizomo를 사용한 코드로 구현한 적이 있지만 이후 보스전이나 맵 이동 등에도 유용하게 사용할 카메라가 필요했다. 그리고 위 영상을 보는데 딱 좋아보이는게 있어 '이걸 안 쓸 이유가 없다'고 생각해서 시네머신으로 만들게 되었다.
< 시네머신 카메라 영역 만들기 >
시네머신의 카메라 영역은 Collider을 통해서 만들어야 하며 이 Collider는 trigger로 만들어야 충돌 문제가 없고 콜라이더는 폴리곤 / 타일맵 콜라이더만 사용이 가능하다
- 사용법
1. 시네머신 설치 후 2D 카메라 제작 (기존 카메라는 사용 불가 처리 - 자동으로)
2. 이후 카메라 영역만큼 Polygon 콜라이더 제작
3. 제작한 콜라이더를 Inspector > 시네머신 Confiner > Bounding Shape 2D 에 끌어다 놓기
< 아 카메라 영역 여러개 쓸거라고, 스테이지 이동 할거라고>
이걸 처리하는게 제일 오래 걸렸지만 실제로 보니 진짜 별거 아니다. (대신 검색에서 죽어도 안나온다)
다행히 갓 구글의 산하 서비스인 유투브에서 이전에 봤던 영상을 되새김질 하는데 성공했고 덕분에 카메라 전환이 가능해졌다.
일단 생각해둔 방법이 2개 있는데
1. 카메라는 1개, 맵을 이동할 때 confiner 변경을 통해 카메라 범위 변경
2. 카메라 여러개, 각 맵에 카메라가 있으며 그 맵에 있는 카메라만 On, 나머지는 Off
그리고 사용한 방법은 2번 방법이다.
using System.Collections; using System.Collections.Generic; using UnityEngine; public class RoomCam : MonoBehaviour { public GameObject vituralCam; private void OnTriggerEnter2D(Collider2D other) { if(other.CompareTag("Player") && !other.isTrigger){ vituralCam.SetActive(true); } } private void OnTriggerExit2D(Collider2D other) { if(other.CompareTag("Player") && !other.isTrigger){ vituralCam.SetActive(false); } } }
위에처럼 소스코드를 만든 뒤 게임 안에는 각 방에 해당하는 범위(위에 말한대로 폴리곤 콜라이더), 그리고 방마다 캠이 있어야 한다. 그리고 범위에 해당하는 오브젝트에 이 코드를 넣은 뒤 virtualCam에 방에 해당하는 카메라를 넣어주면 된다.
그럼 플레이어가 이동할 때마다 각 카메라들이 ON/OFF 되면서 자연스러운 전환이 된다.
ㅁㅊㄷㅁㅊㄷ
이 간단한거 해본다고 시간을 너무 빼앗겼다. 오늘은 쉬어야징
반응형'쾌락없는 책임 (공부) > Unity' 카테고리의 다른 글
[유니티 2D 스터디] 애니메이션, 추가로 시네머신 살짝 공부 (0) 2021.03.16 유니티 인게임 메뉴 만들기 - 게임 일시정지, 재시작 등 (0) 2021.03.14 [유니티 2D 스터디] 캐릭터 이동, 벽 충돌처리 (0) 2021.03.11 유니티 - 플레이어에게 총을 쏘는 적 (0) 2021.01.15 유니티 - 플레이어 슬라이딩 구현 (0) 2021.01.04