반응형
[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일 경우 기절을 시킨다.
반응형
'Unreal > Manual' 카테고리의 다른 글
Unreal 캐릭터 충돌 프리셋 설정 Character Collision Preset (0) | 2024.01.08 |
---|---|
Unreal 아군, 적군 충돌 구별하기 Collision Channel (0) | 2024.01.08 |
Unreal AI Controller Class 가져오기 (0) | 2024.01.05 |
Unreal UDamageType 구현 (2) | 2024.01.02 |
Unreal 적 사망 상태 유지, Animation 상태 유지 (0) | 2023.12.28 |