인프런 커뮤니티 질문&답변
13:50
작성
·
571
답변 3
4
https://stackoverflow.com/questions/23451983/how-to-avoid-two-navmeshagent-push-away-each-other-in-unity
특별히 '이해'를 하는 영역이 아니라,
그냥 유니티가 그렇게 되어 있습니다.
NavMeshAgent를 붙여서 NavMesh를 이용한 이동 방식은
(Collision을 이용해) 기본적으로 Agent끼리 서로 피해가도록 되어 있는데,
하나를 이동시키면 너무 인접하게 되어 의도하지 않게 상대를 밀치기도 합니다.
이를 가장 쉽게 해결할 수 있는 방법은
박쥐처럼 앞으로 레이저를 쏴서 정말 이동 가능한지를 한 번 더 확인하는 것인데
NavMeshAgent을 사용하지 않고
일반 이동을 할 경우에는 위 현상이 일어나지 않습니다.
3
Collider가 붙었다고 무조건 꼭 충돌이 되는 것은 아니고,
어떤 함수(기능)을 사용했느냐가 중요합니다.
유니티 물리 시스템을 사용했다거나, NavMeshAgent 등을 사용했다거나
하는 조건에 따르는데, 만약 IsKinematic 설정으로 물리 시스템도 적용받지 않는 상태라면
Collider는 그냥 참고용 정보일 뿐입니다.
추가로 MMO에서는 서버단에서 충돌 체크하기가 워낙 힘들기 때문에
유닛끼리 충돌은 하지 않는 경우가 거의 99%입니다.
1
답변 감사드립니다.
근데 답변 보고 생긴 논외의 질문이긴한데..
이제 NavMeshAgent로 이동하지 않으니까 플레이어와 몬스터가 서로 밀지 않고 심지어 관통해서 지나갈 수도 있게 되었더라구요.
근데 플레이어도 몬스터도 둘 다 Is Trigger가 체크되어 있지 않은 Collider가 붙어 있는데 생각해보니 왜 관통이 될까 싶기도 하네요. Collider가 붙어있으면 관통이 되지 않는걸로 알고 있는데 혼란스럽습니다.





