작성
·
19
·
수정됨
0
안녕하세요,
항상 재밌게 강의를 수강하고 있습니다.
Rookiss님의 "강의 62. 게임설정" 까지 따라했는데, 원치않는 동작이 발생하여 질문드립니다.
Lobby로 입장하여 GameConfigPopup에서 맵을 Watermill로 변경한 이후 게임을 시작하면, Player 캐릭터들의 위치는 GameStart 객체의 location에 spawn되고 Bot들은 (0,0,0) 에 근접한 위치에 spawn되고 있습니다. 더불어, Bot들은 spawn이후에 움직이지도 않습니다.
레벨을 Level_WaterWheel로 바꾸어 곧바로 실행시키면 Player와 Bot들 모두 랜덤으로 Spawn되고 Bot들도 잘 움직입니다.
제 생각에는 BP_LobbyGameMode의 TryStartGame 이벤트에서 ServerTravel 커맨드를 이용하여 Level_WaterWheel 레벨로 이동한 이후에 Level_WaterWheel에 존재하는 NavMeshBoundsVolume이 제대로 빌드되지 않아서 그런거 같습니다. 제가 옳게 생각한걸까요??
이 문제를 해결하기 위해선 어떻게 블루프린트를 변경해야할까요?
도와주시면 정말 감사하겠습니다.
==================================================
질문 올리고 여러가지 시도한 결과, 여러가지 해결방법 중 한가지를 찾은 것 같습니다. NavMesh 문제가 맞았던 것 같고, Project Settings - Navigation Mesh - Runtime에서 Runtime Generation을 Dynamic으로 변경한 이후 (추가로 저는 Force Rebuild on Load 를 true로 설정했습니다), BP_GameMode의 BeginPlay 이벤트에서 딜레이를 1.5초 정도 주니까 해결되었습니다. 일단 원하는 결과가 나와서 만족스럽긴하지만 여전이 이게 옳바른 방법인지는 여전히 잘 모르겠습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 민트향칵테일님.
Player가 예상 위치에 스폰되지 않고, Bot들이 움직이지 않는 문제는 NavMesh와 관련된 문제일 가능성이 높습니다. Level 전환 시 NavMesh가 제대로 빌드되지 않으면 AI가 경로를 찾지 못해 움직이지 못할 수 있습니다.
이 문제를 해결하기 위한 몇 가지 방법을 제안드리겠습니다:
NavMeshBoundsVolume 수동 재배치:
NavMesh 자동 업데이트:
Dynamic
옵션을 활성화 해보세요. 이 옵션은 게임 플레이 중에 경로가 자동으로 업데이트 되도록 할 수 있습니다.서버 트래블 후 NavMesh 빌드:
ServerTravel
커맨드를 통해 레벨을 이동한 후, AINavigation
시스템이 즉시 작동하지 않을 수 있습니다. 함수나 이벤트를 통해 NavMesh를 강제로 리빌드하거나 경로를 초기화하도록 설정해보세요.BeginPlay에서 NavMesh 상태 체크:
BP_LobbyGameMode
의 BeginPlay
또는 적절한 이벤트에서 NavMesh 빌드 상태를 체크하고, 필요 시 강제로 업데이트하는 코드를 추가해 보세요.유사한 문제에 대한 다른 질문 및 답변을 참고하면 더 나은 이해에 도움이 될 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.