player가 총을 발사할 때, 적 AI가 근처에 있다면,
player 주변 위치로 이동시키려고 함.
총을 쏘면 총소리를 듣고 몰려오는 좀비 같은 느낌으로 구현하려고 함.
어떻게 접근하면 되겠는가?
-------------------------------------------------------------
Answer>
총을 쏘는 기능의 함수를 호출할 때,
player 근처의 AI를 찾아내서, 아래의 함수를 호출하면,
인자로 전달된 AI가 player 주변으로 이동하게 됩니다.^^
function EnemyMoveWhenGunFire( PlayerController playerIn, AIController enemyIn )
{
local vector vecTmpDir, vecNearPos;
local float fTmpDist;
vecTmpDir = normal( enemyIn.pawn.location - playerIn.pawn.location )
fTmpDist = enemyIn.pawn.cylinderComponent.collisionRadius + playerIn.pawn.cylinderComponent.collisionRadius;
vecNearPos = playerIn.pawn.location + vecTmpDir * fTmpDist;
enemyIn.ChangeStateNMoveTo( vecNearPos );
//'enemyIn.MoveTo( vecNearPos );'를 바로 호출할 수는 없습니다.
//왜냐하면, MoveTo()는 latent function이기 때문입니다.
//따라서,
//ChangeStateNMoveTo()는 특정 state로 전환하도록 하는 함수이고,
//이동은 특정 state 내에서 MoveTo()를 호출해서 이루어 지도록 합니다.
//님의 project이 어떤 state를 사용하는 지는 제가 알 수가 없어서리, ^^;;;;;;
//이건 님이 직접 작성하시기 바랍니다.
}
player 근처의 AI를 찾을 때는 AllActors()보다는 VisibleCollidingActors()가 좋습니다.
왜냐하면, 탐색의 '중심 위치'와 '반지름'을 입력할 수 있기 때문입니다.
VisibleCollidingActors(
class
float Radius, optional vector Loc, optional bool bIgnoreHidden
)
위 iterator를 사용할 때,
Loc에 player의 '중심 위치'를 입력하시고,
Radius에 player 근처에 해당되는 범위의 '반지름'을 입력하시면 되겠습니다~ ^^
Tag:
안기훈, Kee Hoon Ahn, Unreal, UDK, iPhone, iPad, app, 앱, iOS