본문 바로가기
[ Unity ]/- 유니티 실습

유니티 Zombie AI NavMeshLink

by MRG 2024. 10. 21.
728x90
반응형

 

▣ 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 매뉴얼

NavMesh Link 컴포넌트는 Unity의 스탠다드 설치 항목이 아닙니다. 액세스 방법은 고수준 NavMesh Building 컴포넌트에 관한 문서를 참조하십시오.

docs.unity3d.com

 

728x90
반응형

'[ 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

댓글