자동 생성된 Off Mesh Link는 Drop Height 높이 이내면 무조건 생성되어 특정지점만 만들고 싶을 경우 적합하지 않다. 이제부터 계단 상단에서 바닥으로 연결하는 하나의 사용자정의 Off Mesh Link를 만들어 보자.

Stair선택후 네비게이션뷰의 [Object]탭에서 Generate OffMeshLinks 속성을 언체크하고 [Bake]탭을 눌러 다시 베이크하면 앞서 생성되었던 Off Mesh Link들이 모두 사라진다.

 

Stair 하위에 빈 게임오브젝트를 2개 만들어 StartPos,EndPos로 이름을 바꾸고 StartPos는 계단 맨위, 착지할  EndPos는 그 아래 바닥에 겹치게 배치한다.  관찰하기 좋게 MyGizmo 스크립트를 추가한다.

교재에서는 Off Mesh Link가 자동으로 연결된다는데 실수로 지웠는지 Stair 인스펙터뷰에 Off Mesh Link컴포넌트를 추가해주고 Start,End가 자동으로 연결안되어 있으면 연결해 줬다.

Bidirectional 은 양방향으로 점프할수 있다는 뜻이고 Activated는 Run Time시 Off Mesh Link를 활성화 하는 것이다. Auto Update Positions는 RunTime시 링크위치가 동적으로 바뀌는 것에 대응한다.

 

 

내비게이션은 3D메시의 정보를 기반으로 네비메시를 생성한다. 따라서 분리된 메시는 추적할 수 없다. 이때 Off Mesh Link를 통해 서로 분리된 메시를 연결할 수 있다. 즉, 추적이 가능하게 연결고리를 생성할 수 있다.

다운로드한 Resources/Models 폴더에 있는 Stair패키지를 설치한다.

프로젝트뷰에 임포트된  Stair폴더는 05.Models로 옮긴다.

Stair 폴더 하위에 있는 Stair모델을 씬뷰로 드래그해서 적절한 위치에 배치한다. 아래부분이 바닥에 묻히게 조절한다.

추가한 Stair는 _STAGE하위로 차일드화 한다. Stair를 선택후 인스펙터뷰에서 Navigation Static과 Off Mesh Link를 선택한다. 인스펙터뷰 Navigation탭에서도 선택할 수 있다.

Navigation Bake TAB을 클릭후 Generated Off Mesh Links-Drop Height을 5로 설정한다. 이는 Off Mesh Link가 생성되는 최대 높이를 지정하는 것이다.

 Bake를 눌러 내비메시를 생성하면 다음과 같이 연결선이 보인다.

계단에 Collider를 추가해 올라갈수 있게 해준다. 연산부하를 줄이기 위해 Mesh Collider컴포넌트의 Convex속성을 체크해 폴리곤수를 낮춘다.

Navigation뷰의 Bake탭의 Agent Radius를 0.2로 변경후 Bake하면 좀더 촘촘하게 Off Mesh Link가 생성된다.

이제 실행해서 계단을 올라가면 몬스터들이 따라온다.

처음에 Player가 계단을 못올라 가서 헤맸는데 다음과 같이  Player collider의 Trigger를 꺼주고 해결하였다. 그리고 교재와 Rigidbody 속성이 달라 수정하였다

+ Recent posts