Unreal Engine/Functional Implementation

Teleport 구현 추가 변동 사항

보별 2025. 9. 19. 13:17

25.09.19 변동 사항

기존 작업이 Player의 Abiltiy Grant 방식이 변경되면서 오류가 발생하게 되었다.

급하게 수정해야했기에, GAS를 활용한 Teleport로 동작하는 것이 아닌 Teleport Scroll Button의 WBP에서 아래와 같이 노드를 연결해줘서 임시로 작동하도록 수정하였다.

Teleport Scroll Button을 누르면 다른 Level에서도 특정 Level의 지정된 위치로 순간이동 시켜야한다.
그래서 현재 Player가 있는 Level이 Teleport Scroll Button으로 이동되는 Level과 같은 Level인지 비교해준 뒤, 지정된 위치로 순간이동이 되도록 해주었다.
그리고 IsTeleporting이라는 변수를 통해  Teleport Scroll Button을 연타할 경우에 계속 Teleport가 되지 않도록 막아주었다.

같은 Level 내의 이동에 쓰이는 Teleport in Field는 아래와 같은 흐름으로 돼있다.

Player Actor의 위치(Location) 값만 원하는 목적지로 변경하면 되는데, 이 과정에서 현재 레벨에 존재하는 그 어떤 액터나 객체도 파괴되거나 새로 생성되지 않기에 데이터가 유지된다.
Player의 모든 정보는 파괴되지 않고 메모리에 그대로 남아있고 별도의 처리가 거의 필요 없기에, 위와 같은 흐름의 BP를 이용하게 된다.

다른 Level로의 이동에 쓰이는 Travel to Field는 아래와 같은 흐름으로 돼있다.

현재 Level에 속한 모든 Actor와 데이터를 메모리에서 내리고, 이 과정에서 기본적으로 Player의 캐릭터도 함께 파괴된다.
그리고 새로운 Level의 데이터를 메모리에 올린 뒤, 새로운 Level의 GameMode에 따라 새로운 Player의 캐릭터를 생성하고 PlayerController에 빙의시키게 된다.
기존 Level에 있던 Player의 캐릭터가 파괴되었기 때문에, 해당 캐릭터에 직접 저장되어 있던 모든 데이터는 사라지게 된다.
그래서 Level 이동 전 데이터를 저장했다가 새로운 Level에서 캐릭터를 생성한 후에 다시 불러와서 적용하는 과정이 반드시 필요하게 되기에, 위 그림과 같은 노드의 연결을 이용하였다.