언리얼엔진/언리얼 C++

GameplayAbilitySystem - Effect

season97 2024. 10. 30. 12:33

 개인적인 공부를 위해 포스팅 하는 글입니다.



▶ Effect (효과)

 

# Effect는 뭔짓을 하는놈일까?

ㆍ 말 그래도 게임에서 뭔가 효과를 입히는걸 Efffcet라고 부른다

 GamePlayEffect라고 부른다

ㆍ 단발성효과, 도트데미지 등등 옵션같은것이 다 정의되어 있어 사용하기만 하면 된다.

ㆍ 또한 디버프, 버프... 점화를걸고 또 점화를걸고...

ㆍ 물약을 먹고... 또 먹고... 중첩이되나? 시간이 초기화되나?

ㆍ 평타3타마다 추가피해.... 등등 

→ 다양한 효과에 대한 처리를 이걸 통해 관리해 주면 된다.

 

눈으로 보기 편하게 BP를 먼저 파주자

 

 

ㆍ 예시를 들면 저렇게 사용할 수 있을 것 같다.

 

진짜 많은 기능이 준비가 되어있는데 아래 예시를보자

ㆍ 10초동안 데미지를 주고싶고, 그 틱은 0.5초마다 데미지가 들어갔으면 좋겠다... 하는 상황엔 위와같이 세팅하면 된다.

ㆍ 맨 아래는 다시 걸렸을때 리셋이될래? 아니면 중첩이될래?에 대한 옵션

ㆍ Execute Periodic Effect On Application은 첫틱부터 데미지줄레? 아니면 그 다음틱부터 줄레? 에 대한 옵션이다

ㆍ 레벨에 따라 다르거나... 한다는 상황이 있으면 커브테이블도 넣어줄 수 있다.

ㆍ 뭐가 걍 겁나 많다. 필요할 상황을 캐치해서 알아보고 사용하는게 중요하겠다.

ㆍ 이전 포스팅에 한 Attribute와도 호환이 되는걸 볼 수 있다.

ㆍ 내가 만들어둔 Helth,MaxHelth 등등이 보인다.

 

 

 

 

※데미지 주는 타입, 효과에 대한 타입을 먼저 정하고 그아래 세부적인걸 정해 나가면 될 것 같다.

ㆍ 예시로 야스오의 궁극기를 만들고 싶다... 라고 할땐 대충 아래와 같이 할 수 있겠다

ㆍ 단발성 피해로.. 물론 다 정의하긴 힘들지만 대충 느낌을 받아들이자

 

 

※ 그냥 포스팅 맨 위에 예시를 들어놓은건 다 처리할 수 있다.

ㆍ 뭐 버프의 스택... ? 초기화할까? 이런느낌을 정의하는 옵션 


# 바로 위에 50데미지 주는 상황을 코드로 한번 해보자

ㆍ Player 코드 부분에 TestEffect변수를 하나 만들어 준다.

ㆍ UGameplayEffect는 따로 헤더를 추가 안하고 #include "AbilitySystem/R1AbilitySystemComponent.h" 에 의해 추가됐다.

ㆍ 그냥 지금은 테스트를 위해 BeginPlay 부분에서 저 위 체력을 50깎는 상황을 실행시켜 주는 부분을 만들어 주자

 

ㆍ 이펙트 내용, 문맥 이뭐야?

ㆍ 핸들 구성 - 지금은 그냥 단순히 50이지만 실제 스킬에 대한 상호작용은 복잡할 것 이기 때문에 필요하다.

- BP 는 스킬에 대한 명시서? 설명서? 같은 느낌으로 만든거다. 

- 예를들어 10초 도트뎀... 10초동안 유효하다.... 그렇다면 지금 몇초지났지? 걸린 애들은 상태가 어떻지?? 이렇게 다양한 변수들이 있을거다

- 이 핸들값을 이용해서 요청을 하기 위해 핸들이 필요하다.

ㆍ 연동

 

ㆍ 실행과 동시에 50이 깎였다. 체력바는 연동을 안해놔서 안깎였다.. ㅋㅋ

 

 

 

 

※ Effect를 사용하는 상황을 잘 캐치하자.

무기. 무기를 장착하면 공격력이 증가한다. 

스킬. 스킬을 쓰면, 그리고 누군가 맞으면, 어떤 효과가 발생한다. 

레벨업을 할때 스텟이 증가한다.

이런식으로 무언가 "효과" 가 발생했을 때 그런 상황들은 이 Effect 를 이용해 관리하면 되겠다.