Question>
질문1:
UDK로 FPS게임을 만들었는데 적이 폰에 다가오는데 바로 코앞까지 다가옵니다.
적이 폰에게 다가와서 멈출 때 좀 거리를 두고 멈췄으면 좋겟는데
어떻게 해야 할지 모르겠습니다.
질문2:
그리고 사용자 캐릭터로 적을 만들었는데 적이 폰을 발견하기 전까지 가만히 서있어서
너무 어색해 보입니다. 적이 폰을 발견하기 전에 가만히 서있지 않고
그 주위를 돌아 다니게 하고 싶은데 어떻게 해야 할지 잘 모르겟습니다.
아시는 분들은 좀 알려주세요. ㅜㅜ
-------------------------------------------------------------
Answer>
답변1:
1 unreal unit을 1 centi meter라고 가정했을 때,
적이 12 meter 이내에 님을 감지했을 때, 멈추게 하고 싶다면,
아래과 같이 작성할 수 있습니다.
class YourAIController extends AIController;
var Pawn pawnPlayer;//이건 님이 알아서 채웁니다.^^;;;;;
//(..중략..)
function TimerOfDetectNStop()
{
if( VSize( pawn.location - pawnPlayer.location ) < 1200.0f )
{
//player가 12 meter이내에 들어 왔음이 감지되었습니다.
//여기서, 멈추게 하는 함수를 호출합니다.^^
}
}
event PostBeginPlay()
{
super.PostBeginPlay();
SetTimer( 0.05f, TRUE, nameof( TimerOfDetectNStop ) );
}
핵심은 SetTimer()와 VSize()에 있습니다.
참고하셔서 구현하시기 바랍니다.^^
답변2:
'Unreal Tournament'에 사용된 AI에서
질문하신 내용과 유사한 부분을 참고하고 싶으시다면,
class UTBot의 'state TacticalMove'를 주로 보셨으면 하고요.
'state RangedAttack', 'state Roaming', 'state Retreating'도
보조로 참고하시면 좋을 듯합니다.
그런데,
위 내용을 제대로 분석하려면, 일단 state에 능숙하셔야 합니다.^^;;;;;;;;
http://udn.epicgames.com/Three/Unreals!cripStatesKR.html
위 link 보시면서, class UTBot을 분석하시고,
위 state들을 참고하셔서, 님이 원하시는 state( 주변을
돌아 다니다가 발견하면 공격하는 state )를 만들어 보시기 바랍니다.
P.S.
unreal engine을 다루는 한국의 game 회사들의
실무자들은 state를 그닥 좋아하지 않고,
state에 대한 지식도 상당히 낮은 편입니다.
아마도,
한국에서 돈을 버는 unreal engine을 사용한 game들이
AI 수준이 상당히 낮은 network online game이라서리,
AI에 대해 진지하게 개발을 하지 않기 때문이라고 생각됩니다.
( 어디까지나 주관적 견해임을 밝힙니다.^^;;;;;;; )
혹시,
취업이나 이직을 준비하시는 거라면,
state 없이 C++이나 unreal s!crip으로 AI를 직접 작성하시는 게
더 도움이 되실 거라고 생각되네요. @_@;;;;
P.S.2
unreal engine 4의 경우,
아직, 'Unreal Tournament'가 만들어 지지 않은 상태이고,
현재 만들고 있는 중이라고 합니다. -_-;;;;;
unreal engine 4로 만든 'Unreal Tournament'의 source는
unreal engine의 membership 사용자라면 git hub에서 누구나 받을 수 있습니다.
( 현재, alpha version의 source를 받으실 수 있습니다. )
unreal engine 4의 AI 처리는
unreal engine 4로 만든 'Unreal Tournament'가 배포된 다음에
분석해야 할 듯 싶네요. ^^;;;;;
Tag:
안기훈, Kee Hoon Ahn, 언리얼, Unreal, UDK, iPhone, iPad, app, 앱, iOS