1. NavMesh Bake
Unity에서 지원하는 Navigation을 써보기 위해 NaveMesh를 Bake 해보겠습니다.

우선은 NavMesh로 만들 GameObject들마다 Navigation Static을 체크해줬습니다.
Navigation Static을 체크한 MeshRenderer들을 기준으로 Bake 됩니다.
(저는 여러 가지 최적화를 위해 맵 관련 GameObject들 마다 Static 모두 체크해두었습니다.)

적당히 값을 설정하여 Bake 했습니다.

Bake에 성공하게 되면, Scene View에서 확인 가능합니다.
2. NavMeshAgent 설정

우선은 플레이어 GameObject에 NavMeshAgent컴포넌트를 추가했습니다.
적당히 값들을 수정해줬는데, Acceleration의 값을 저렇게 준 이유는 캐릭터 이동에 가속도 영향을 받지 않도록 하기 위해 매우 큰 값으로 입력해주었습니다.
m_NavMeshAgent.updateRotation = false;
transform.rotation = Quaternion.LookRotation(Quaternion.Euler(0, Camera.main.transform.eulerAngles.y, 0) * new Vector3(m_MoveDir.x, 0f, m_MoveDir.y));
m_NavMeshAgent.SetDestination(transform.position + transform.rotation * Vector3.forward);
키 입력에 따라 NavMeshAgent가 동작할 수 있도록 코딩해주었습니다.
캐릭터 Navigation 설정 · PieceOfPaper/Unity_LinksAwakening@acb1fb8
- 샘플맵에 오브젝트들 static으로 설정하고 nave mesh 생성 - NavMeshAgent를 통해 이동하도록 구현
github.com
결과물입니다.
3. NavMesh 경사 각도 수정

근데 약간의 문제가 생겼습니다.
지형을 올라가고 내려가기 위해 NavMesh를 만들었는데, 경사가 높아서 끊어져버렸습니다.
직접 올라가 보려 했는데 못 올라가고 있었습니다.

경사 기본값인 45도에서 60도로 수정하고 Bake 해봤습니다.

Scene View에서 보기에는 연결되었습니다.
정상적으로 경사로를 올라갈 수 있네요.
4. 다음에 할 일
오늘은 캐릭터를 움직이기 위한 Navigation 작업만 간단하게 했는데, 다음은 본격적으로 심리스 맵 구조를 구현해볼까 합니다.
일단 생각해두는 건 메인씬과 서브씬을 분리하여 서브씬을 사용하는 씬의 경우 메인씬이 되어 위치에 따라 서브씬을 불러오도록 할 예정입니다.
더 작업을 하고 싶은데 졸려서 안 되겠네요.
'개인프로젝트 일지' 카테고리의 다른 글
유니티로 "젤다의 전설: 꿈꾸는 섬" 모작 6일차 (0) | 2022.09.12 |
---|---|
유니티로 "젤다의 전설: 꿈꾸는 섬" 모작 5일차 (2) | 2022.09.10 |
유니티로 "젤다의 전설: 꿈꾸는 섬" 모작 4일차 (0) | 2022.09.08 |
유니티로 "젤다의 전설: 꿈꾸는 섬" 모작 2일차 (0) | 2022.09.04 |
유니티로 "젤다의 전설: 꿈꾸는 섬" 모작 1일차 (0) | 2022.09.03 |