적이 플레이어의 던지기 공격을 막아내는 Blocking과 플레이어의 뒤로 순간이동 후 공격을 만들어 볼 것이다.
또한 플레이어의 에너지 시스템으로 적을 기본공격으로 타격시 에너지 획복, 던지기 공격시 에너지 차감을 구현해 볼 것이다.
StartBlock과 EndBlock 커스텀 이벤트를 만들고 BPC_DamageSystem에 있는 On Blocked 함수를 불러온다.
None, Blocking, BlockedSucessfully 3가지의 경우가 있는 열거형 블프를 만든다.
위와 같이 블락을 시작했을 때 블락하는 Block 애니메이션을 부르고 막는 중일때 BlockReact 애니메이션을 부른다.
에셋에 마땅히 없어서 적당한 프레임을 할당하였다.
BT에서 BTT를 만들고 위와 같이 블락을 시작하는 노드를 구성한다.
먼저 적이 플레이어의 던지는 공격을 알기 위해서 BPI에 IsAttackingCanBlocked 함수를 만들었다.
BP_Player에서 던지는 공격을 알려주는 IsThrowing 변수를 출력으로 지정한다.
플레이어가 던지기 공격을 하면 IsThrowing 변수가 True로 바뀌어 데코이레션에서 알 수 있다.
데코레이션에서 IsAttackingCanBlocked 함수를 가져와 출력한다.
위와 같이 데코레이션을 붙이면 IsAttackingCanBlocked가 True(= IsThrowing)일 때 즉, 플레이어가 던지는 공격을 할 때 아래의 노드가 실행 될 것이다.
모든 공격을 막으면 안되기 때문에 쿨다운으로 5초마다 막을 수 있도록 한다.
다음으로 플레이어의 에너지 구현을 위해 기존의 HealthBar 위젯과 Health 위젯을 복사한 뒤 이미지를 바꾸었다.
그리고 BP_Player에서 MaxEnergy와 CurrentEnergy를 만든다.
에너지는 0.5단위를 쓰지 않게 하여서 거기에 맞도록 수정한다.
체력과 마찬가지로 뷰포트에 추가하고 위치를 조정하여 체력바 아래에 위치하도록 조정하였다.
공격에 성공하여 플레이어의 히트박스가 활성화되면 CurrentEnergy를 하나 추가한다.
던지기가 2의 에너지를 소모할 것이므로 가지고 있는 에너지가 2이상일 때만 던지기 공격이 가능하도록 노드를 추가한다.
던지기 검을 Spawn하고나서 CurrentEnergy를 2줄이는 노드를 추가한다.
적의 텔레포트를 구현하기 위해서 TeleportToPlayer 커스텀이벤트를 추가한다.
플레이어의 위치 정보를 가져와 Forward 벡터에 -150을 곱하여 플레이어 뒤로 순간이동하도록 구성하였다.
BTT_Teleport도 위와 마찬가지로 추가하여 위와 같이 텔레포트 이후 플레이어에게 강공격을 곧바로 실시하도록 만들었다.
이 또한 쿨다운을 달아 10초의 쿨타임을 주었다.
추가로 난이도를 위해 대쉬에 무적발동이 되지 않도록 설정했다.
적의 Block과 순간이동, 플레이어가 기본공격으로 타격시 에너지 회복, 던지기시 에너지 2소모 등 전부 잘 구현된 것을 볼 수 있다.
'언리얼 - 게임 개발' 카테고리의 다른 글
첫 게임 개발(19) _ 적의 랜덤 연속 투사체 공격 구현 (0) | 2024.06.28 |
---|---|
첫 게임 개발(18) _ 적 보스 체력바 구현 (0) | 2024.06.28 |
첫 게임 개발(16) _ 적 강공격 및 투사체 구현 (0) | 2024.06.26 |
첫 게임 개발(15) _ EQS 기초 (0) | 2024.06.24 |
첫 게임 개발 (14) _ 능력 구현 (1) | 2024.06.23 |