UE5 - Overlap

haura·2025년 1월 23일
0

UE5

목록 보기
9/21

언리얼 엔진 - Aura Effect Actor 구현 및 테스트

1. 오버랩(Overlap)이란?

오버랩(Overlap)은 두 액터(Actor)가 서로의 충돌 범위(콜리전 영역) 안에 들어올 때 발생하는 이벤트입니다. 이 이벤트는 충돌 처리(Collision Handling)와는 다르게 물리적 충돌 없이도 실행되며, 게임 내 다양한 상호작용을 구현하는 데 사용됩니다.

오버랩의 동작 원리

  1. 충돌 범위 정의:
    • 구(Sphere) 또는 박스(Box)와 같은 콜리전 컴포넌트 생성.
  2. 콜리전 설정:
    • 오버랩 이벤트가 발생하도록 설정(예: OverlapAllDynamic).
  3. 이벤트 바인딩:
    • 컴포넌트에 OnComponentBeginOverlapOnComponentEndOverlap 바인딩.
  4. 콜백 함수 실행:
    • 오버랩 발생 시 바인딩된 함수 호출.

2. 주요 기능

1) 초기 설정

  • PrimaryActorTick 비활성화: 틱 기능이 필요 없으므로 비활성화.
  • 컴포넌트 추가:
    • Mesh: Static Mesh 컴포넌트.
    • Sphere: 충돌 감지 범위를 정의하는 구(Sphere).
Mesh = CreateDefaultSubobject<UStaticMeshComponent>("Mesh");
SetRootComponent(Mesh);
Sphere = CreateDefaultSubobject<USphereComponent>("Sphere");
Sphere->SetupAttachment(GetRootComponent());

2) 오버랩 이벤트 처리

  • OnOverlap 함수:
    • 역할: 충돌 범위 내에 다른 액터가 들어오면 이벤트를 발생시킴.
    • 입력 매개변수:
      • OverlappedComponent: 충돌을 감지한 컴포넌트.
      • OtherActor: 충돌한 다른 액터.
      • OtherComp: 충돌한 액터의 컴포넌트.
      • OtherBodyIndex: 충돌한 바디의 인덱스.
      • bFromSweep: 스윕 충돌 여부.
      • SweepResult: 충돌에 대한 추가 정보.
    • 핵심 동작:
      1. 충돌한 액터가 IAbilitySystemInterface를 구현하고 있는지 확인.
      2. Attribute Set을 가져와 Health 값을 25 증가.
      3. 포션 객체 파괴.
void AAuraEffectActor::OnOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor,
    UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
    if (IAbilitySystemInterface* ASCInterface = Cast<IAbilitySystemInterface>(OtherActor))
    {
        const UAuraAttributeSet* AuraAttributeSet = Cast<UAuraAttributeSet>(
            ASCInterface->GetAbilitySystemComponent()->GetAttributeSet(UAuraAttributeSet::StaticClass()));

        UAuraAttributeSet* MutableAuraAttributeSet = const_cast<UAuraAttributeSet*>(AuraAttributeSet);
        MutableAuraAttributeSet->SetHealth(AuraAttributeSet->GetHealth() + 25.f);

        Destroy(); // 포션 삭제
    }
}
  • EndOverlap 함수:
    • 범위를 벗어날 때 호출되는 함수.
    • 현재 비어있으며 향후 기능 추가 예정.

3) 이벤트 바인딩

  • 오버랩 이벤트 연결:
Sphere->OnComponentBeginOverlap.AddDynamic(this, &AAuraEffectActor::OnOverlap);
Sphere->OnComponentEndOverlap.AddDynamic(this, &AAuraEffectActor::EndOverlap);

3. 학습 포인트

  • Delegate와 Callback 바인딩:

    • Dynamic Delegate를 활용한 이벤트 처리.
    • Delegate 시그니처 확인 및 바인딩 방법 학습.
  • Ability System Interface 활용:

    • 속성 접근을 인터페이스로 처리하여 확장성 확보.
  • 속성 관리 및 변경:

    • Attribute Set 활용.
    • 직접 수정 대신 Gameplay Effect 도입 필요성 학습.

0개의 댓글