해결된 질문
작성
·
65
0
안녕하세요.
현재 Custom Navmesh Link 를 이용하여
양방향 이동 관련 모습을 보여주셨는데요.
특정 타입의 몬스터별로 해당 기능을 제어가 가능한지 궁금합니다. 마리오를 보면 빨간색 거북이는 언덕에서 되돌아가고 녹색 거북이는 언덕을 뛰어내려서 쫓아오잖아요. 이것처럼 타입별로 제어가 가능한지 궁금해서요.
양방향일때 오르고 내리는 부분에 대해서 애니메이션처리가 가능한지 궁금합니다. 내려갈때는 raycast 등을 이용해서 fall 애니메이션을 발동시킬 수 있을거 같은데, 올라갈때는 등반애니메이션 설정이나 점프 애니메이션을 하게 할 수 있는지 궁금해서요.
좋은 강의 감사합니다.
답변 2
1
안녕하세요. 우선 소중한 후기 감사합니다.
우선 두 캐릭터를 Agent Type을 다르게 설정한 후 NavMeshLink 를 2개를 생성하셔야 합니다. 그 후 NavMeshLink 컴포넌트에서 AgentType을 설정하시면 가능할것으로 생각합니다.
Start와 End위치에 Collider 컴포넌트를 배치하고 충돌여부로 판단하는 방법을 사용하실 수도 있구요. 다른 방법으로는 아래와 같이 NavMeshLink에 진입여부를 판단한 후 StartPos와 EndPos 위치를 가져올 수 있습니다. 따라서 현재 위치와의 거리를 판단해서 시작지점에 진입했는지 여부를 확인해서 적절한 애니메이션을 동작시킬 수 있습니다.
// 현재 OffMeshLink에 진입했을 경우
if (agent.isOnOffMeshLink)
{
var linkData = agent.currentOffMeshLinkData;
Vector3 startPos = linkData.startPos;
Vector3 endPos = linkData.endPos;
// 현위치와 startPos와 endPos 간의 거리를 계산해 진입여부 판단
}
하지만 매 프레임마다 이렇게 확인하는 코드보다는 조금은 원시적일 수도 있지만 Collider를 배치하고 충돌 콜백을 받아서 처리하는 것이 좀더 바람직하지 않을까 생각합니다.
도움이 되셨으면 좋겠습니다.~
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. paehwang님.
Custom NavMesh Link를 통한 양방향 이동 및 특정 타입의 몬스터 별 제어와 관련하여 몇 가지 질문을 하셨습니다. 이를 통해 독특한 몬스터 로직을 구현하는 방법에 대해 고민 중이신 것 같습니다.
1. 특정 타입의 몬스터별 제어:
유니티에서 특정 타입의 몬스터마다 이동 방식이나 반응을 정의하려면, 몬스터의 타입별 속성을 스크립트로 관리하실 수 있습니다. 예를 들어, NavMeshAgent와 함께 Custom NavMesh Link의 논리를 재정의하여 특정 조건(예: 몬스터의 타입)에 따라 행동 방식을 변경할 수 있습니다. 예를 들어, 녹색 거북이는 절벽을 뛰어넘고, 빨간 거북이는 절벽 끝에서 돌아오도록 하는 로직을 추가할 수 있습니다. 필요한 경우, NavMeshAgent.OverrideArea() 등을 이용하여 상황별로 다른 이동 경로를 설정할 수도 있습니다.
2. 애니메이션 처리:
양방향 이동에서 오르내림에 따라 애니메이션을 포함하고자 한다면, 애니메이션 관련 트리거를 상황에 맞게 설정하면 됩니다. 내려갈 때는 Raycast를 사용하여 지면과의 거리를 측정하여 낙하 애니메이션을 적용할 수 있고, 올라갈 때는 Climbing이나 Jumping 같은 애니메이션을 트리거할 수 있습니다. 이를 위해서는 각 상황에 맞는 애니메이터 상태 머신을 구축하고 상태 전환을 관리하는 스크립트를 작성하면 됩니다.
비슷한 주제의 질문과 답변이 Inflearn의 Q&A에 있습니다:
유니티 NavMesh를 활용한 다양한 AI 로직 제어에 대한 논의
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.