나무 열 그루가 막던 길을 다시 열기

나무를 없애지 않고 통과할 길을 열었습니다
오후의 틈에서 일부 나무가 이동을 막고 있었습니다. 풍경을 유지하면서 필요한 곳만 통과하도록, 씬에 배치된 tree-round와 tree-pot 인스턴스 10개의 BoxCollider를 비활성화했습니다. 외부 에셋 원본과 다른 콜라이더 137개는 그대로 두었습니다.
물리 충돌과 길찾기 데이터를 함께 바꿨습니다
캐릭터가 충돌 없이 지나갈 수 있는지와 AI가 그곳을 길로 선택하는지는 다른 문제입니다. 콜라이더만 바꾸면 길찾기 데이터에는 이전 장애물이 남을 수 있습니다. 이번 씬은 PhysicsColliders를 기준으로 NavMesh를 다시 구웠습니다.
기존 NavMesh 에셋의 GUID를 유지해 씬의 연결은 바꾸지 않고 탐색 데이터를 갱신했습니다. 나무의 모습이 달라지는 작업이 아니므로, 외형이 비슷하다는 사실만으로 통과 여부를 판단하지 않았습니다.

실제 Unity 경로와 씬 저장 상태를 확인한 화면입니다. 충돌 설정의 변경을 외형 전후 비교로 대신하지 않았습니다.
격리 검사 10곳과 실제 장면 8곳을 구분합니다
실제 CharacterController를 각 나무 중심으로 4m 이동시키는 격리 검사에서는 10곳 모두 통과했습니다. 주변 충돌을 유지한 장면에서는 8곳을 통과했고, 나머지 2곳은 카페 건물과 커피 가판대의 충돌이 겹쳐 있었습니다.
OverlapSphere로 주변 장애물을 확인했고, 나무 중심의 NavMesh도 8곳에서 연결됐습니다. 겹친 2곳의 건물·가판대 충돌은 의도적으로 남겼습니다. 따라서 모든 위치에서 자유롭게 지나갈 수 있게 됐다고 설명하면 실제 결과와 다릅니다.
실패한 경로가 무엇에 막혔는지 확인하기
첫 검사 실패를 지우지 않고 나무 자체의 충돌과 주변 장애물을 나눠 확인했습니다. 대상으로 정한 나무의 콜라이더가 꺼졌다는 사실만으로, 그 공간 전체가 비었다고 볼 수는 없기 때문입니다.
씬 변경과 검사 후 임시 도구는 제거했습니다. 다만 기존 웹 빌드는 다시 만들지 않았으므로 이 변경이 포함되어 있지 않습니다. Unity 씬에서 확인한 결과와 당시 배포된 웹의 상태를 구분해 남깁니다.
통과 실패를 나무 문제로만 보지 않기
같은 나무 위치라도 검사할 때 주변 장애물을 남겼는지에 따라 결과가 달라졌습니다. 아래 도표는 원문 검증 결과를 요약한 것이며, 게임에 새 이동 로직을 추가한 것은 아닙니다.
flowchart TD
A["나무 10개의 콜라이더 해제"] --> B["나무만 격리한 이동 검사"]
A --> C["주변 충돌을 유지한 검사"]
B --> D["10곳 모두 통과"]
C --> E["8곳 통과"]
C --> F["2곳은 카페·가판대 충돌 유지"]
목표가 나무만 통과하도록 하는 것이라면, 다른 장애물이 막는 두 곳을 무조건 실패로 보거나 주변 충돌까지 지우는 것은 범위를 벗어날 수 있습니다. 반대로 두 곳이 실제로 통과 가능하다고 기록하면 플레이어가 겪는 상태와 달라집니다. 대상 콜라이더의 변경과 최종 경로의 결과를 각각 남긴 이유입니다.
이후 비슷한 문제를 확인할 때에도 먼저 의도한 변경 대상을 고정하고, 실패 위치에 겹친 다른 충돌체가 있는지 살펴볼 수 있습니다. 단순한 성공 개수보다 어느 조건에서 성공했는지가 다음 작업의 기준이 됩니다.
미로


댓글
이 글에 대한 생각을 남겨 주세요.