쾌락없는 책임 (공부)/Unity

2D 횡스크롤에서 맵에 따른 카메라 전환

허스크 2021. 4. 6. 21:21
반응형
 

[유니티 2D 스터디] 애니메이션, 추가로 시네머신 살짝 공부

애니메이션 전환  기존 들고있는 스프라이트의 모션이 빈약한 결과 애니메이션이 단 2개가 되었습니다. 크게 설명할것도 없이 방향키 입력을 받으면 isWalk = true, Player_idle에서 Player_walk가 됩니다

husk321.tistory.com

<이전 스크립트>

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RoomCam : MonoBehaviour
{
    public GameObject vituralCam;
    public GameObject Map;
    private void OnTriggerEnter2D(Collider2D other) {
        if(other.CompareTag("Player") && !other.isTrigger){
            vituralCam.SetActive(true);
            Map.SetActive(true);
        }
    }
    private void OnTriggerExit2D(Collider2D other) {
        if(other.CompareTag("Player") && !other.isTrigger){
            StartCoroutine(SetTF());
        }
    }

    IEnumerator SetTF(){
        yield return new WaitForSeconds(1f);
        vituralCam.SetActive(false);
        Map.SetActive(false);
    }
}

 이전 스크립트의 문제라고 하면 맵 사이를 왔다갔다하면 맵이 사라지는데 플레이어가 맵에 진입하게 되는 문제가 있었습니다.

 

<개선 스크립트>

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RoomCam : MonoBehaviour
{
    public GameObject vituralCam;
    public GameObject Map;
    bool isPlayerExist;
    private void OnTriggerEnter2D(Collider2D other) {
        if(other.CompareTag("Player")){
            isPlayerExist = true;
            vituralCam.SetActive(true);
            Map.SetActive(true);
        }
    }
    private void OnTriggerExit2D(Collider2D other) {
        if(other.CompareTag("Player")){
            isPlayerExist = false;
            vituralCam.SetActive(false);
            StartCoroutine(SetTF());
        }
    }

    IEnumerator SetTF(){
        yield return new WaitForSeconds(1f);
        if(!isPlayerExist){
            Map.SetActive(false);
        }
    }
}

플레이어에 따라 즉각적으로 카메라가 바뀌게 했으며 맵의 경우 bool변수를 추가해 플레이어가 지금 있는곳이 어디인지 검증하게 했습니다.

반응형