• [Unreal 게시판] AI character의 충돌 이동 탐색 처리2014.05.12 PM 02:22

게시물 주소 FONT글자 작게하기 글자 키우기

Question>

unreal engine 4로 TPS game을 만들고 있음.

game을 test하고 있는데, 좁은 경사길에서
올라 가려는 AI character들과 내려 가려는 AI character들이
서로 길을 막아서, 멀뚱 멀뚱 서있는 현상이 발생함.-_-;;;

이런 현상을 피했으면 좋겠고, 원할하게 움직였으면 좋겠음.
어떻게 처리해야 하는가?

-------------------------------------------------------------

Answer>

우선, AI character의 충돌을 감지하신 다음에,
AI character가 현재 향하고 있는 방향의 반대 방향으로 이동하게 하면,
멀뚱멀뚱 서 있는 현상은 해결될 거 같은데요.
( 현재 향하고 있는 방향이 충돌이 일어난 방향이라서, 반대 방향으로 이동하는 겁니다.^^;;; )


충돌은 UPathFollowingComponent::OnActorBump()나
UCharacterMovementComponent::NotifyBumpedPawn()로 감지하면 되겠고요.
( 아무래도, navigation system을 쓰시니까, 전자가 좋으실 듯 싶은데, 취향대로 고르세요~ ^^ )


만약,
반대 방향으로 이동했는데도, 충돌이 일어 난다면..^^;;;;;;
단위 시간당 AI character끼리의 충돌 회수를 기록해서,
일정 수치가 넘으면,(즉, AI character끼리의 충돌이 너무 많이 발생하면,)
넓고 여유 있는 곳으로 공간 이동시켜 버리세요~ ^^;;;;;;


공간 이동은 AActor::SetActorLocationAndRotation()나
UPrimitiveComponent::MoveComponent()를
( 이건 절대 좌표를 넣을 수 없어서리, 님이 직접 delta를 계산해 주셔야 합니다.^^;;;)
사용하시면 좋으실 듯 싶네요.^^


그리고,
AI character들을 특정 위치로 모두 이동하게 하려면,
'좁은 경사로'를 모두 한꺼번에 이용할 수는 없기 때문에,
(좁은 곳에서 여러명이 움직이면, 서로 부딪쳐서, 길막음이 일어 나니까요.^^;;;;;;;;)
AI character들에게
은행의 번호표 같은 우선 순위를 부여해서,
먼저 처리할 놈을 먼저 이동 시키고,
나중에 처리할 놈은 자신의 차례가 될 때까지 주변 탐색을 하도록 맴돌게 하는
식의 처리가 필요하다고 생각합니다.


길찾기에 대해서는 unreal engine site 공식 문서의
'navigation mesh'나 'pylon'을 keyword로 검색하셔서 해결하시기 바랍니다.
(link가 너무 많아서, 여기에 적지 않습니다. @_@;;;)
'pylon'만 잘 박아도, 길찾기 문제는 unreal engine에서 거의 자동으로 해결 됩니다.^^







Tag:
안기훈, Kee Hoon Ahn, Unreal, UDK, iPhone, iPad, app, 앱, iOS
댓글 : 2 개
멋지게 crowd simulation 같은거를 쿨럭;
잘 아시네요.^^
친구글 비밀글 댓글 쓰기