▣ NavMeshLink의 주요 속성:
Start Point: 시작 지점. 에이전트가 이 지점에서 링크를 시작합니다.
End Point: 끝나는 지점. 에이전트가 이 지점으로 링크를 통해 이동합니다.
Width: 링크의 폭입니다. 에이전트가 넓은 경로를 따라 이동해야 한다면 이 값을 조정합니다.
Cost Modifier: 링크의 비용을 설정하는 값입니다. 이 값은 경로 탐색 시 우선순위에 영향을 줍니다. 0이면 기본 경로 비용과 동일하게 동작하고, 더 높은 값은 비용을 증가시켜서 우선순위를 낮춥니다.
Bidirectional: 에이전트가 양방향으로 링크를 사용할 수 있는지 여부를 나타냅니다. 체크하면 두 방향으로 이동이 가능합니다.
Auto Update Position: 이 옵션을 켜면 Start Point와 End Point가 오브젝트의 위치 변화에 따라 자동으로 업데이트됩니다.
▣ 코드 설명:
agent.isOnOffMeshLink: 이 속성은 에이전트가 NavMeshLink 위에 있는지 확인할 수 있는 속성입니다. 즉, 에이전트가 두 개의 NavMesh 영역을 연결하는 링크에 도착했을 때 true가 됩니다.
StartCoroutine(JumpAcrossLink()): NavMeshLink를 만났을 때, 좀비가 링크를 넘기 위한 점프 동작을 실행합니다. 이 코루틴은 점프 동작을 부드럽게 수행하는 함수입니다.
점프 중 상태 관리 (isJumping):
점프 중에는 다른 동작을 수행하지 않도록 isJumping 변수를 true로 설정합니다.
에이전트 멈춤:
agent.isStopped = true;로 설정하여 점프 중에 NavMeshAgent의 경로 탐색을 일시적으로 중지시킵니다.
OffMeshLinkData를 사용하여 시작 지점과 끝 지점을 가져옴:
linkData.startPos와 linkData.endPos는 NavMeshLink의 시작과 끝 좌표입니다. 이 좌표들을 사용해 에이전트를 점프시키는 경로를 계산합니다.
포물선 경로 계산:
Vector3.Lerp()는 startPos와 endPos 사이의 위치를 선형 보간하고, Mathf.Sin(t * Mathf.PI)를 사용해 포물선 경로를 만들어 점프 동작을 자연스럽게 만듭니다.
점프 완료 후 경로 재개:
점프가 완료되면 agent.CompleteOffMeshLink()로 NavMeshAgent에게 링크를 넘었다고 알리고, agent.isStopped = false로 다시 경로 탐색을 재개합니다.
https://docs.unity3d.com/kr/2020.3/Manual/class-NavMeshLink.html
'[ Unity ] > - 유니티 실습' 카테고리의 다른 글
유니티 Door Base (0) | 2024.10.24 |
---|---|
유니티 Zombie AI Damage (0) | 2024.10.21 |
유니티 Weapon Fire Delay (0) | 2024.10.19 |
유니티 FlashLight (1) | 2024.10.18 |
유니티 Zombie AI NavMeshAgent (19) | 2024.10.17 |
댓글