[GAS] 게임플레이 이펙트 (GameplayEffect)

2025. 1. 13. 23:55·Unrael/GAS (GameplayAbilitySystem)

1. 개요

게임 플레이 이펙트는 데미지, 체력 회복, 이동 속도 증가, 상태 이상 등 캐릭터의 속성을 변경하는데 사용된다.

오늘은 게임 플레이 이펙트에 대해 살펴보자.

 

2. 게임플레이 이펙트 (GameplayEffect)

1. 역할

  • AttributesSet의 FGameplateAttributeData와 GameplayTag를 변경한다.
  • AttributesSet이 변경되면 델리게이트로 이벤트를 감지할 수 있다.
  • 델리게이트에 연결된 함수가 호출되면 원하는 상호작용(HP 변경, 피격 모션, 사운드 출력)을 할 수 있다.

 

2. 특징

  • UGameplayEffect 클래스이다.
  • 데이터만 저장한다. (로직을 작성하지 않는다.)
  • 자신의 고유 레벨을 가지며 효과의 가중치를 조절한다.
  • 수정자(Modifiers)와 실행자(Executions)로 해당 속성 변경한다.

 

3. 게임플레이 이펙트 적용 과정

0. 게임 플레이 클래스를 정의한다.

1. 트리거가 발생한다.

2. 트리거를 통해 상호작용한 액터가 AbilitySystemComponent(ASC)를 소유했는지 파악한다.

3. 정의한 게임 플레이 클래스로 게임플레이 이펙트를 생성한다.

  • 게임플레이 이펙트를 생성한 주체(Source)를 저장한다.
  • 레벨별 효과 정도를 설정한다.

4. 생성한 게임플레이 이펙트를 적용한다.

 

1. 게임플레이 클래스 정의

Blueprint > GameplayEffect

블루프린트로 GameplayEffect를 상속받아 생성한다.

 

2. 트리거 발생

트리거가 발생하는 경우는 다양하다.

 

물리적 상호작용

  • Trigger Volume: 특정 영역에 오브젝트가 들어갈 때 발생한다.
  • Collision : 두 개의 액터가 충돌하면 트리거가 활성화된다.

 

입력 이벤트

  • 키보드, 마우스 또는 컨트롤러 입력에 따라 트리거 발생한다.

 

타이머 기반

  • 특정 시간이 경과했을 때 트리거가 발생한다.

 

3. 게임플레이 이펙트 생성 및 적용

// ASC 컴포넌트를 소유하고 있는지 확인한다.
UAbilitySystemComponent* TargetASC = UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent(TargetActor);
if (TargetASC == nullptr) return;
check(GameplayEffectClass);

// EffectContext를 생성하고 이펙트 근원지(Source)를 정의한다.
FGameplayEffectContextHandle EffectContextHandle = TargetASC->MakeEffectContext();
EffectContextHandle.AddSourceObject(this);

// Effect를 적용한다.
TargetASC->ApplyGameplayEffectSpecToSelf(*EffectSpecHandle.Data.Get());

 

GameplayEffect에 다양한 효과를 구현하기 위해 수정자(Modifiers)와 실행자(Executions)도 계속 살펴볼 예정이다.

'Unrael > GAS (GameplayAbilitySystem)' 카테고리의 다른 글

[GAS] 게임플레이 이펙트 - Instant  (1) 2025.01.14
[UE/GAS] AbilitySystemComponent 생성하기  (0) 2025.01.06
'Unrael/GAS (GameplayAbilitySystem)' 카테고리의 다른 글
  • [GAS] 게임플레이 이펙트 - Instant
  • [UE/GAS] AbilitySystemComponent 생성하기
DevColIn
DevColIn
복잡함을 단순하게
  • DevColIn
    심플한 코딩생활
    복잡함을 단순하게
  • 전체
    오늘
    어제
    • 전체보기 (223)
      • Unreal 부트캠프 (49)
        • TIL (34)
        • 사전캠프 (7)
        • 본캠프 (8)
      • Unrael (10)
        • 환경설정 (0)
        • Basic (19)
        • Component (5)
        • GAS (GameplayAbilitySystem) (3)
        • AI (2)
        • Implement (10)
        • UI (1)
        • Error (1)
        • Network (2)
        • Tip (1)
      • Level Design (5)
      • Math (1)
      • Design Pattern (16)
      • Computer Science (2)
        • Network (1)
        • Database (1)
      • Algorithm (79)
        • Basic (4)
        • Practice (74)
      • C++ (4)
        • Basic (4)
      • Tool (0)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    unreal
    AI
    Implement
    KPT회고
    레벨디자인
    Algorithm
    Animation
    하드 레퍼런싱
    DesignPattern
    gas
    tsoftobjectptr
    퀘스트
    actor
    Til
    게임동기화
    basic
    액터
    사전캠프
    assetmanager
    unrealengine
    GameplayEffect
    소프트 레퍼런신
    알고리즘
    Design Pattern
    component
    디자인 패턴
    c++
    내일배움캠프
    디자인패턴
    본캠프
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[GAS] 게임플레이 이펙트 (GameplayEffect)
상단으로

티스토리툴바