예전에 게이트 블프를 만들어서 오버랩시 Open Level 함수로 다른 맵으로 이동을 구현했었다.
하지만 그 레벨에서 플레이어 스타터 위치로만 이동했었다.
여러 맵을 이동해야하기 때문에 한 맵에서도 여러 스폰 장소가 필요하다.
이러한 레벨 이동을 간단히 구현해볼 것이다.
게임 인스턴스에서 TeleportationTag를 변수로 만들었다.
게이트 블프에서 마찬가지로 LevelName과 TeleportationTag 변수 2개를 추가하고 인스턴스 편집이 가능하게 하였다.
오버랩시 게임 인스턴스의 TeleportationTag에 게이트의 TeleportationTag를 넣는다.
이후 카메라 Fade 이후 LevelName에 맞는 Open Level을 실행한다.
게임모드에서 ChoosePlayerStart 함수를 오버라이드한다.
언리얼에서 기본적으로 제공하는 함수인데 이를 활용하기 쉽도록 오버라이드하는 과정이다.
Choose Player Start는 레벨 이동시 여러개의 플레이어 스타터가 있으면 그 중 하나를 고르는 함수이다.
디폴트로 전부 None으로 되어있으면 여러개의 플레이어 스타터중 랜덤으로 골라진다.
위와 같이 구성하여 인스턴스의 TeleportationTag값과 같을때만 값을 반환하도록한다.
즉, 게이트 블프의 TeleportationTag가 게임 인스턴스를 통해 게임모드에서 플레이어 스타터를 임의적으로 고를 수 있도록 하는 것이다.
플레이어 스타터의 디테일에서 플레이어 스타트 태그의 값을 임의로 정할 수 있다.
위는 02로 지은 것이다.
게이트에서 Level Name과 TeleportationTag를 설정할 수 있다.
이동할 LevelName을 넣어주고 그 맵에서 어느 플레이어 스타터로 이동할지 정하는 과정이다.
이러면 모든 게이트의 저 두 값을 조정함으로써 어느 맵에서 어디로 이동되는지 간단히 구현할 수 있다.
위와 같이 자유롭게 이동이 가능하다.
다만 이동시 체력, 에너지, 능력, 인벤토리 등이 초기화가 되는데 다음에는 이를 해결해볼 것이다.
'언리얼 - 게임 개발' 카테고리의 다른 글
첫 게임 개발 (36) _ 부서지는 오브젝트 구현 및 숨겨진 장소 발견 구현 (0) | 2024.09.02 |
---|---|
첫 게임 개발 (35) _ 레벨 이동시 데이터 저장과 파괴된 아이템 정보저장 (2) | 2024.09.02 |
첫 게임 개발 (33) _ 체크포인트와 리스폰 구현 (0) | 2024.09.01 |
첫 게임 개발 (32) _ 아이템 사용시 물체와 상호작용 (1) | 2024.09.01 |
첫 게임 개발 (31) _ 인벤토리 구현 (0) | 2024.08.31 |