언더테일 보면 한 화면에 보이는 장소가 하나의 씬처럼 구성되어 있잖아.
화면 끝으로 가면 상점이나 집 안으로 이동하는 것처럼 화면이 어두워졌다가 다시 밝아지면서 새 장소가 나와. 무슨 말인지 알지?
물론 종종 스크롤 방식으로 길게 이어지는 장소도 있지만 대부분 위의 방식으로 되어 있어.
이걸 유니티로 똑같이 하려고 하는데, 어떻게 해야 할지 너무 막막해. ㅜ ㅜ
일일이 맵을 다 조각내서 하나하나 전부 다 Scene을 만들면 Scene만 수백 개가 넘을 것 같은데 설마 언더테일이 그런 방식으로 만들어진 건 아니겠지?
(물론 언더테일은 게임메이커로 만들었으니 똑같진 않겠지만 그래도 비슷할 거 아녀)
고민 끝에 내린 결론은, 중요한 장소만 Scene을 따로 만들고
나머지 부분들은 하나의 큰 Scene에 여러 zone을 배치하고, 특정 zone으로 이동할 때 "주인공 텔레포트 + 카메라를 순간 이동" 시키는 방식을 쓰면 될 것 같은데 어때?
스테이지에 시작점, 끝지점에 콜라이더 놓고 프리팹화 해서 순차적으로 소환하는게 다임
물론 소환하는건 오버헤드가 심해서 그냥 다 소환해놓고 플레이어의 Index에 맞게 활성화마 시켜주는게 다지
소환한다는 게 뭐야? 맵 조각을 다 개별 씬으로 만들고 화면 끝 닿으면 SceneManager.LoadScene(285); 이렇게 그냥 LoadScene 한다고?
Instantiate한다는 뜻 Scene으로 스테이지를 넘기면 일단 DontDestroyOnLoad가 반강제인데 이거 많이 써서 좋을 것도 없음
물론 난 간단한 스테이지 위주라서 이렇게 사용하기도 했고 굳이 디버깅 어렵게 초기화 씬을 따로 만들어놓기도 싫어서 이런 방법을 사용한거고 그냥 맘가는대로 하셈
ㅇㅇ 사실 2D 탑다운 RPG 게임에서 맵을 다 조각내서 수백 개의 Scene을 만드는 건 말이 안 되는 것 같아. zone간 전환시 로딩시간도 길 것 같고. 결국 내가 생각한 게 정답 같은데 그래도 고수분들 의견이 있을까 싶어 물어봤어. "그냥 맘가는대로 하셈"이 정답인 것 같아. 고마워. 편안한 밤 보내.
스테이지 하나에 입구나 출구가 여러개 있는 경우엔 조금 생각할게 많아질 수도 있긴한데 화이팅