쾌락없는 책임 (공부)/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변수를 추가해 플레이어가 지금 있는곳이 어디인지 검증하게 했습니다.
반응형