이번에는 적을 공격하면 적이 맞는 효과로 빛나게 설정하고 체력이 0이되면 적이 파괴되도록 구현할 것이다.


공격할 때 검을 휘두를때만 적을 타격할 수 있도록 NotifyState (ZD) 블루프린트를 만들어 위와같이 시작할때 Set Active를 True로하고 끝나면 Set Active를 false로 바꾸도록 한다.

Animation Source에서 위와 같이 검을 휘두르는 5,6 프레임에만 히트박스가 적용될 수 있도록 NotifyStates를 할당한다.

검 크기에 맞는 히트박스를 만들고 BP_Enemy_Base 액터와 만났을 때 데미지를 적용하는 함수를 실행한다.

BP_ActionChar_Base에서 Event AnyDamage를 불러와 패배하지 않았을때 BPC Vitality의 Receive Damage를 실행하도록 한다. Defeated 이벤트 디스패쳐를 만들고 실행 후 체력이 0이 되어 Is Defeated가 Ture가 되면 Defeated를 호출한다.

BP_ActionChar_Base에서 SetHitBoxCollision함수를 위와 같이 만든다. Bool 변수인 Set Active 값에 따라 HitBox의 콜리전이 활성화되는 것과 끄는 것으로 구분한다. 이는 검을 휘두르는 애니메이션의 5,6번째 프레임에만 콜리전이 활성화되어 그 프레임에서만 적을 타격할 수 있게 하기 위함이다.
다음작업은 적을 타격하거나 플레이어가 데미지를 입었을 때 반짝이는 효과를 구현할 것이다.

BP_ActionChar_Base의 Sprite의 머티리얼을 가져와서 위와 같이 이미시브 컬러에 FlashColor, FlashMultiplier을 추가하여 곱하고 이미시브 컬러에 연결한다. FlashColor, FlashMultiplier를 우클릭하여 파라미터로 설정한다. Flash Color 값에 따라 색이, Flash Multiplier 값에 따라 빛나는 강도가 변할 것이다.

위의 3개를 노드로 묶고 FlashEffect라 이름붙인다.

BP_ActionChar_Base에 TriggerFlash 커스텀이벤트를 만들고 위와 같이 파라미터를 Set하는 함수를 이용하여 상황에 따라 캐릭터의 색과 빛나는 정도를 조절할 수 있는 함수를 만든다.

이를 Event AnyDamage의 끝에 연결하고 색은 흰색, 강도를 5로 입력한다. 이제 적이나 플레이어는 데미지를 입으면 흰색으로 빛나는 효과를 얻는다.

BP_Enemy_Base에서 아까 호출한 Defeated 디스패처를 바인드하여 Dead이벤트를 호출할 수 있게하여 죽었을 때 파괴되도록 설정한다.

잘 동작하는 것을 볼 수 있다. 다음은 적의 AI를 구현하여 플레이어를 공격하도록 만들어 볼 것이다.
'언리얼 - 게임 개발' 카테고리의 다른 글
첫 게임 개발 (6) _ 적 AI 인지 시스템 구현 (0) | 2024.06.19 |
---|---|
첫 게임 개발 (5) _ 적 공격 AI구현 (0) | 2024.06.19 |
첫 게임 개발 (4) _ 적 이동경로 AI구현 (0) | 2024.06.19 |
첫 게임 개발 (3) _ 넉백 및 패배시 애니메이션 구현 (1) | 2024.06.18 |
첫 게임 개발 (1) _ 플레이어 이동 및 애니메이션 구현 (2) | 2024.06.16 |