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