1) 개념 (What & Why)

  • FGameplayAbilityTargetData는 언리얼 엔진의 **Gameplay Ability System (GAS)**에서 능력이 적용될 대상(들), 위치, 히트결과 등을 표현하는 구조체입니다.
  • “어떤 대상에게, 어떤 방식으로 능력을 적용할지”를 한데 모아 전달하기 위한 용도로 쓰입니다.
  • TargetData는 C++에서 직접 생성(예: new FGameplayAbilityTargetData_SingleTargetHit)하거나, 블루프린트 노드(예: Ability Target Data from Actor 등)를 통해 얻을 수 있습니다.

2) 기본 사용법

  1. 타겟 데이터 생성
    • 상황별로 알맞은 하위 구조체를 생성합니다. 예:
      • FGameplayAbilityTargetData_SingleTargetHit → 단일 히트 결과를 다룸
      • FGameplayAbilityTargetData_ActorArray → 여러 액터 목록을 한꺼번에 지정
      • FGameplayAbilityTargetData_LocationInfo → 특정 위치(혹은 시작·종료 지점) 정보
  2. TargetDataHandle 구성
    • FGameplayAbilityTargetDataHandle에 생성한 TargetData를 Add(...)로 추가합니다.
    • 여러 TargetData를 하나의 Handle에 넣을 수도 있습니다.
  3. 능력/효과 적용
    • 완성된 FGameplayAbilityTargetDataHandle을 ApplyGameplayEffectToTarget, CommitAbility 등에 넘겨주어 게임플레이 이펙트나 능력 로직에서 활용합니다.
    • 내부적으로 Handle에 담긴 모든 대상, 히트 결과 등을 참조해 효과를 적용합니다.

3) AOE(광역) 스킬 활용 예시

  • 예시: SphereOverlap 또는 Trace를 통해 여러 대상을 찾은 뒤, 각 HitResult를 FGameplayAbilityTargetData_SingleTargetHit 구조체로 감싸 TargetDataHandle에 쌓습니다.
  • 마지막에 ApplyGameplayEffectToTarget(…, TargetDataHandle, …) 식으로 호출 → 핸들 안의 모든 대상에게 동시에 효과 부여.
  • 혹은 여러 액터를 단순히 FGameplayAbilityTargetData_ActorArray 한 개에 추가한 뒤 한꺼번에 넘겨도 광역 처리가 가능합니다.

4) 특정 대상(단일) 선택 예시

  • 단일 타겟(조준, 클릭 등)을 히트로 구했을 경우, FGameplayAbilityTargetData_SingleTargetHit에 해당 히트결과를 넣습니다.
  • 또는 이미 특정 Actor를 알고 있다면, FGameplayAbilityTargetData_ActorArray를 만들어 ActorArray.Add(TargetActor)로 추가해도 동일 효과.
  • 생성된 TargetDataHandle을 능력 실행 함수나 Apply… 계열 함수에 전달하면, 지정된 대상에게만 효과가 적용됩니다.

5) 추가 팁 (Etc.)

  • 내장 AbilityTask(예: UAbilityTask_WaitTargetData)와 AGameplayAbilityTargetActor 클래스를 조합하면, 블루프린트 상에서 손쉽게 TargetData를 얻을 수 있습니다. (Confirm/Cancel 입력도 자동 처리)
  • 여러 개의 TargetData 항목을 하나의 Handle에 담을 수 있으므로, 대량 대상 처리나 세밀한 충돌 결과를 다룰 때도 유용합니다.
  • 보안/검증: TargetData는 주로 클라이언트가 서버에 전송하는 형식이므로, 서버 측 능력 로직에서 재검증(대상이 실제로 유효한지, 거리가 맞는지 등)을 하는 것이 좋습니다.
  • 커스텀 확장: 기본 ActorArray/SingleTargetHit 외에, NetSerialize 등을 구현해 커스텀 구조체를 만들면 게임 특유의 타겟 데이터를 담을 수 있습니다.

최종 한줄 정리

FGameplayAbilityTargetData는 GAS에서 '누구/어디'에 능력을 적용할지 표현하는 핵심 구조체로,
AOE·단일 대상·특정 위치 등 다양한 시나리오를 유연하게 처리하도록 돕는다.

위 내용을 통해 FGameplayAbilityTargetData를 어떻게 생성·활용하고, AOE나 단일 대상 같은 상황에서 간단히 적용할 수 있는지 이해하셨길 바랍니다. 능력 구현 시 TargetData를 잘 활용하면 여러 대상 동시 처리나 특정 트레이스 결과 반영을 효율적으로 할 수 있습니다.

'개발일지(Unreal5) > GAS[Gameplay Ability System]' 카테고리의 다른 글

AGameplayAbilityWorldReticle  (0) 2025.03.01
Unreal Engine GAS - Gameplay Cue  (0) 2025.02.14
4.5 게임플레이 이펙트  (0) 2024.02.21
4.2 Gameplay Tags  (0) 2024.02.20
#1. 어빌리티 컴포넌트  (0) 2024.02.20

+ Recent posts