언리얼 - 게임 개발

첫 게임 개발(19) _ 적의 랜덤 연속 투사체 공격 구현

earth-star 2024. 6. 28. 13:59

적의 강공격 이후 Spawn을 하여 투사체를 소환하는 식으로 공격을 구현했었었다.

이로인해 강공격 애니메이션이 끝나고나서 투사체가 스폰되어 약간 어색함이 있었다.

이를 해결하기 위해 ANS를 이용하여 애니메이션 중간에 투사체가 소환되도록 할 것이다.

또한 적의 연속 투사체 공격을 구현해 볼 것이다.

 

위와 같이 내려찍는 모션이 나오는 프레임에 ANS를 할당한다.

 

적 블프에 있던 Spawn 노드들을 떼어다가 할당된 ANS에 할당한다.

이로써 애니메이션 중간 프레임에 투사체가 소환된다.

 

다음으로 적의 연속 투사체 구현을 위한 ANS를 만든다.

위와 같이 모든 프레임에 걸쳐서 ANS를 만든다.

 

적의 머리 위에 FlipBook을 위치시키고 커다란 구름모양의 플립북을 할당한다.

평소에는 보이지 않다가 연속 투사체 공격을 할때에만 보이도록 할 것이다.

 

우선 시작시 SetVisibility를 False로 하여 보이지 않도록 한다.

 

위에서 만든 ANS에 Notify 시작시 SetVisility를 True로 하여 보이도록 하고 끝날시 다시 Flase로 하여 연속 공격시 보이고 끝날시 다시 보이지 않도록 한다.

 

또다른 ANS를 만들고 Fire라고 이름 붙였다.

연속 투사체 공격시 투사체가 발사되는 순간의 ANS이다.

위에서 적의 머리위 플립북 위치를 특정하기 위해서 씬 컴포넌트를 배치하여 위치정보를 가져온다.

플레이어의 위치를 가져와 랜덤한 숫자를 x축에 할당한다.

(적의 머리위) ~ (플레이어+- 600범위)를 잇는 벡터를 FindLookAtRotation으로 구한다.

이를 Spawn 함수의 Rotation에 연결한다.

이로서 적의 머리위에서 플레이어 주변의 랜덤한 방향으로 적의 투사체가 연속으로 떨어질 것이다.

 

 

Fire ANS를 애니메이션의 칼을 휘두를때 프레임으로 4번 배치한다.

참고로 이 애니메이션은 기본공격 에셋을 이어붙여서 임시로 만들었다.

 

적 블프에서 새 함수를 만들어서 애니메이션을 할당한다.

 

BTT를 새로 만들고 위의 함수를 가져와 만든다.

 

 

BT에서 새로 Sequence를 만들어 쿨다운 데코를 붙여서 만들었다.

 

 

 

랜덤하게 떨어지는 것이 잘 구현되었다.