몬스터 AI관련해서 질문드립니다
199
작성한 질문수 14
안녕하세요
몬스터AI를 디테일하게 제작하다 의문이 들어서 질문드립니다.
다른 상용화된 3D 게임에서 보면 몬스터가 플레이어에게 접근할 때 앞에 다른 몬스터들이 있으면 그를 무시하지 않고 피해서 돌아서 가는데요 이것은 raycast를 여러방향으로 쏴서 주변 몬스터를 체크해 피해가도록 구현을 하는 걸까요? 아니면 다른 방식이 있을까요?
아니면 그냥 겹쳐도 상관없이 구현하는 경우도 있다고 하는데 기획에 따라서 다르겠지만 요즘은 어떤식으로 구현할까요??
답변 2
0
그런 경우 raycast이라기보다는 길찾기를 이용합니다.
navigation mesh를 활용해서 우회하게 길을 찾는 것이죠.
0
다른 몬스터들을 obstacle처럼 인식해서 피해가도록 설계한다는 말씀이신가요? 몬스터가 그냥 밀고들어가거나 피하지 않고 계속 직진해서요... 혹시 참고할만한 알고리즘이나 자료가 있을까요...??
0
안녕하세요, 인프런 AI 인턴입니다. 황보민님.
몬스터 AI의 경로 탐색과 관련된 질문에 대해 답변 드리겠습니다. 현대 게임 개발에서 몬스터가 서로의 경로를 피하는 것은 현실감 있는 환경을 제공하기 위해 중요한 요소로 고려됩니다. 몬스터가 플레이어에게 접근할 때 다른 몬스터들을 피하는 방식은 여러 가지가 존재합니다:
Raycasting을 활용한 방법:
- 말씀하신 바와 같이 Raycast를 여러 방향으로 쏘아 주변의 몬스터를 감지하고 피하는 방법을 사용할 수 있습니다. 이는 상대적으로 간단하게 구현할 수 있으며, 현장에서 많이 사용되는 방법 중 하나입니다.
- 말씀하신 바와 같이 Raycast를 여러 방향으로 쏘아 주변의 몬스터를 감지하고 피하는 방법을 사용할 수 있습니다. 이는 상대적으로 간단하게 구현할 수 있으며, 현장에서 많이 사용되는 방법 중 하나입니다.
Navigation Mesh (NavMesh)와 Local Avoidance:
- Unity에서 제공하는 NavMesh를 활용하여 경로 탐색을 수행하고, Local Avoidance 기법을 통해 주변의 다른 몬스터를 피할 수 있습니다. 이는 NavMesh Agent의 내장 기능을 활용하여 특정 지점 사이에서의 이동 중에 다른 장애물을 피할 수 있도록 돕습니다.
- Unity에서 제공하는 NavMesh를 활용하여 경로 탐색을 수행하고, Local Avoidance 기법을 통해 주변의 다른 몬스터를 피할 수 있습니다. 이는 NavMesh Agent의 내장 기능을 활용하여 특정 지점 사이에서의 이동 중에 다른 장애물을 피할 수 있도록 돕습니다.
Steering Behaviors:
- Craig Reynolds의 Steering Behaviors 기법을 통해 개체 간의 피하기, 회피, 추적 같은 행동을 세밀하게 제어할 수 있습니다. 이는 실제 물리 법칙을 기반으로 한 자연스러운 움직임을 보장합니다.
- Craig Reynolds의 Steering Behaviors 기법을 통해 개체 간의 피하기, 회피, 추적 같은 행동을 세밀하게 제어할 수 있습니다. 이는 실제 물리 법칙을 기반으로 한 자연스러운 움직임을 보장합니다.
관련된 기존 질문의 답변들을 참고해 보시면 도움이 될 수 있습니다:
기획에 따라 몬스터가 서로 겹쳐도 상관없는 경우도 있습니다. 그 경우에는 단순히 각 몬스터의 이동 목표만 설정하여 구현하는 방식도 사용됩니다. 이러한 방법들은 각 게임의 최적화와 리소스 활용 계획에 따라 달라질 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
UI 기능 관련 질문이 있습니다!
0
37
2
픽셀 좌표 스크린 좌표
0
32
0
전체적으로 코드 읽는게 굉장히 오래 걸리네요...
0
73
2
카메라 #2 수업 캐릭터 쓰러짐 해결
0
84
1
플레이어 움직임이 끝날때, 기울어짐 현상
0
83
1
Input 적용과 관련하여 질문 있습니다.
0
75
1
디버그 불가.. Unity에 연결 불가
0
82
1
달리기 애니메이션 에러
0
89
2
오랜만에 게임을 만들다가 사운드 관련해서 뭔가 궁금한게 있어서 봤습니다
0
66
1
GetKey 오류
0
109
2
에셋을 어디에 올려두신지 알 수 있나요?
0
107
1
재귀호출? 오류나는데 왜 이래요 ?
0
169
6
Animation blending 파라미터 계산
0
68
1
newPos와 to지점이 겹쳐져야 하는거 아닌가요?
0
97
3
오브젝트 복제하니까 자꾸 이런게 뜨면서 꺼집니다
0
88
2
질문있습니다
0
143
2
아 이거 소스코드 같은거 없나요?
0
142
3
질문 드립니다. string.IsNullOrEmpty(name)
0
87
2
@Managers 가 씬에 배치되어 있어도 문제가 되지 않나요?
0
136
2
유니티6 NavMesh 안되는분들
1
176
1
Unity6 Unity-Chan Material 마젠타 문제 해결법
7
527
1
GetComponent<Poolable> 질문드립니다.
0
102
2
UI 불러오지 못함
0
118
2
UI 자동화 #1 - Util.cs의 FindChild함수에서 component.name에 컴포넌트 이름이 뜹니다.
0
155
2





