본문 바로가기
Unreal/Manual

Unreal Apply Radial Damage 범위 공격

by Dev_카페인 2024. 1. 8.
반응형

[Unreal/C++] Apply Radial Damage 범위 공격

 

UGameplayStatics::ApplyRadialDamage

반경 내에서 지역적 피해를 줍니다. 최소 1개의 액터에 피해가 적용되면 True를 반환합니다.

 

 

- Syntax

static bool ApplyRadialDamage
(
    const UObject * WorldContextObject,	// 월드
    float BaseDamage,	// 기본 데미지
    const FVector & Origin,	// 데미지 근원지
    float DamageRadius,	// 데미지 범위
    TSubclassOf< class UDamageType > DamageTypeClass,	// 데미지 타입
    const TArray< AActor * > & IgnoreActors,	// 피해 제외 액터 (오너 등)
    AActor * DamageCauser,	// 가해물품
    AController * InstigatedByController,	// 가해 컨트롤러
    bool bDoFullDamage,	// 거리에 따라 피해 조정 여부
    ECollisionChannel DamagePreventionChannel	// 충돌 채널
)

 

 

 

// GameplayStatics.h

ApplyRadialDamage 원형

// GameplayStatics.cpp

 

 

폭발은 BeginOverlap에서 처리 했습니다.

 

 

UGameplayStatics::ApplyRadialDamage
(
    GetWorld(),	// WorldContextObject
    20,	// BaseDamage
    GetActorLocation(),	// Origin Damage Area
    300.0f,	// DamageRadius
    DamageType,	// UDamageType::StaticClass() ?
    ignoreActors,	// 제외할 액터들 TArray<AActor*> ignoreActors
    this,	// 나 폭탄
    GetOwner()->GetInstigatorController(),	// instigatedController 폭탄을 발사한 캐릭터의 컨트롤러
    false	// bFullDamage 거리가 멀수록 적은 데미지를 받습니다.
    , // ECollisionChannel DamagePreventionChannel = ECC_Visibility
 );

 

월드를 가져와서 설정

기본 데미지는 20으로 설정

충돌한 시점의 ActorLocation을 가져온다.

300 범위 안에 들어온 액터를 대상으로 데미지를 입힐 것

DamageType은 클래스를 만들었다. StunType의 데미지를 구현한 클래스이다.

ignoreActors에 제외할 대상을 추가해서 넣어준다. 공식 문서를 보면 자기 자신은 피해 대상에서 자동으로 제외되는 것 같다.

Causer를 설정해주고 오너의 컨트롤러를 설정해준다.

거리가 멀수록 적은 데미지를 받을 수 있도록 bFullDamage는 false로 설정해준다.

충돌 채널은 현재 다루지 않았지만 필요한 경우 직접 정의해서 사용할 수 있다.

 

 

TakeDamage에서 DamageType을 받아와 StunType일 경우 기절을 시킨다.

 

 

 

 

 

 

 

UGameplayStatics::ApplyRadialDamage

Hurt locally authoritative actors within the radius.

docs.unrealengine.com

 

반응형