ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 유니티 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 되면서 자연스러운 전환이 된다.

    ㅁㅊㄷㅁㅊㄷ

     

    이 간단한거 해본다고 시간을 너무 빼앗겼다. 오늘은 쉬어야징

    반응형

    댓글

Designed by Tistory.