언리얼 엔진5 Advanced - 아이템 상자 구현

타입·2025년 4월 18일
0

언리얼 강의

목록 보기
46/47

게임플레이 이펙트를 활용한 아이템과 무기 기획

대미지, 회복 상자의 구현

체력 리젠(Regeneration) 상자, DOT(Damage over time) 상자의 구현

캐릭터에 무기 추가
무기로 인한 공격 범위 증가
무기로 인한 공격력 증가

게임플레이 큐 (GC)

시각 이펙트나 사운드와 같은 게임 로직과 무관한 시각적, 청각적 기능을 담당함

데디케이티드 서버에서는 사용할 필요가 없음

  • 두 종류의 게임플레이 큐가 있음
    • 스태틱 게임플레이 큐
      일시적으로 발생하는 특수효과 사용, Execute 이벤트 발동
    • 액터 게임플레이 큐
      일정 기간동안 발생하는 특수효과에 사용, Add/Remove 이벤트 발동

C++로도 구현할 수 있지만, 블루프린트로 제작하는 것이 더 생산적임

게임플레이 이펙트에서 자동으로 GC와 연동할 수 있도록 기능을 제공하고 있음

게임플레이 큐의 재생은 GameplayCueManager가 관리함 (다른 시스템과 분리된 구조)

게임플레이 태그를 사용해 쉽게 발동시킬 수 있음
이 때 반드시 GameplayCue로 시작하는 게임플레이 태그를 사용해야 함

GE에서 Has Duration 타입으로 발동 시 Current 값이 변경됩니다.
하지만 Period를 지정하면 Base 값이 변경됩니다.

BP 상에서 GE가 발동될 때 GC를 실행할 수 있습니다.
GC에 태그를 지정한 후 GE에서 실행할 GC의 "게임플레이 큐 태그"를 설정하면 됩니다.

UE5.5 버전에서 GE의 GrantedTags 때처럼 "Remove Gameplay Effects with Tags" 항목이 바로 보이지 않습니다.
컴포넌트에서 "다른 이펙트 제거"를 선택한 후 소유 태그 쿼리에 태그를 설정하면 됩니다.

실습코드

https://github.com/dnjfs/ArenaBattle_GAS/commit/2fbd7454a2c3f80355838c43b29221a722a5e57a

  • 공격 특수효과 구현
    타겟에 GC 발동
    GameplayCue 태그를 지정하여 태그를 통해 GC가 발동될 수 있도록 처리
    OnExecute 이벤트에서 이펙트 출력 처리

  • 상자 효과 구현
    Damage: 즉시 50 데미지
    Heal: 즉시 20 힐 (2초 후 리셋)
    Regen: 2초간 0.25초마다 2 회복 (총 HP 18 회복)
    Dot: 3초간 0.5초마다 5 데미지 (총 HP 35 감소)
    InvinsibleInf: 무적 상태로 변경
    InvinsibleRemove: 무적 상태 제거

  • 무기 상자 구현
    무기 상자 오버랩 시 태그를 통해 이벤트 발동
    플레이어 캐릭터에 무기 장착/해제 태그 이벤트에 대한 델리게이트 바인딩
    무기 장착/해제 시 어트리뷰트를 직접 수정해봄

profile
주니어 언리얼 프로그래머

0개의 댓글