본문 바로가기

언리얼엔진

36. SetTimerbyEvent / 이벤트 생성

FireStorm 스킬의 다단 히트 공격

BP_FireStorm의 변수

- DamageTick(플로트) : 데미지가 들어가는 간격 / 기본값 : 0.125

- DamagePerTick(플로트) : 간격마다 들어갈 데미지 / 기본값 : 5.0

- Duration(플로트) : 스킬의 지속시간 / 기본값 : 4.0

- OverlappedActors(Actor / 배열) : 대상이 Overlap 되었을 때, 들어온 모든 대상들을 담을 배열

 

다단히트를 구현하기 위해 사용할 변수 3개를 추가하였다.


BP_FireStorm의 이벤트그래프

데미지를 주기 위해서 ActorBeginOverlap / ActorEndOverlap에서는 Overlap 충돌로 받아온 Other Actor들을 OverlappedActors에 ADD / REMOVE 해준다.

 

BP_FireStorm의 이벤트그래프

기본적으로 FireStorm의 Auto Activate과 Capsule의 Generate Overlap Events는 꺼두었다.

이후 BP_Character에서 Spell 몽타주의 Notify가 호출되면서 EndActionA 이벤트를 부르게되면 그때 BP_FireStorm에서

Auto Activate과 Generate Overlap Events를 켜주게 된다.

 

EndActionA 이벤트가 호출된 시점부터 데미지를 주면 되는데, 밑에 커스텀 이벤트를 하나 추가하여 Damge를 주는 로직을

만들어두었다.


Set Timer by Event

Set Timer by Event

- Event : 특정 이벤트를 연결해주는 핀(DamageEvent)

- Time : 타이머 간격(DamageTick)

- Looping : 계속 반복될 것인지(True)

 

이런 식으로 구성하였다.

EndActionA 이벤트가 호출되면 FireStorm의 Activate와 Capsule의 OverlapEvents를 켜주면서 DamgeEvent를 DamageTick 간격만큼 실행하게 된다. Looping을 체크하여 계속해서 반복하게 되는 것이다.


이제 Duration 시간이 지나면 스킬이 사라지도록 함수를 생성해보자.

OnTimeOver 함수에서는 FireStorm을 Deactivate하고 Capsule의 OverlapEvents를 꺼주면서 마지막으로

OverlappedActors 배열 안을 모두 비워주게 된다.

BP_FireStorm의 OnTimeOver 함수


이벤트 생성

- 시그너처 : (입력) [출력]을 뜻함

- 함수 선택 : 필요한 함수 선택(OnTimeOver)

 

* 선택해놓은 함수 이름 변경 후 컴파일 시, 이벤트 생성의 선택한 함수의 이름도 자동으로 바뀐다