UGamePlayStatics::ApplyDamage()
- 한 액터가 다른 액터에게 데미지를 주고 싶을 때 사용
- 헤더파일 : #include “Kismet/GameplayStatic.h”
사용법
static float ApplyDamage(
AActor* DamagedActor, // 데미지를 받을 액터
float BaseDamage, // 기본 데미지 양
AController* EventInstigator, // 데미지를 일으킨 컨트롤러(플레이어/AI)
AActor* DamageCauser, // 데미지를 일으킨 실제 액터(무기 등)
TSubclassOf<UDamageType> DamageTypeClass, // 데미지 타입 클래스
float DamageMultiplier = 1.0f // 데미지 배율(기본값 1.0)
);
사용예시
// 기본 사용법 - 적에게 10의 데미지를 줌
float AppliedDamage = UGameplayStatics::ApplyDamage(
EnemyActor, // 데미지를 받을 적 액터
10.0f, // 10의 데미지
GetController(), // 현재 캐릭터의 컨트롤러
this, // 데미지 원인(자기 자신)
UDamageType::StaticClass() // 기본 데미지 타입
);
// 특별한 데미지 타입 사용 예시
float FireDamage = UGameplayStatics::ApplyDamage(
EnemyActor, // 데미지 대상
20.0f, // 20의 데미지
PlayerController, // 플레이어 컨트롤러
FireWeapon, // 화염 무기
UFireDamageType::StaticClass(), // 화염 데미지 타입
1.5f // 50% 추가 데미지
);
AActor::TakeDamage()
- 액터가 데미지를 받을 때 호출되는 핵심 함수. 액터클래스에 정의.
사용법
virtual float TakeDamage(float DamageAmount,
FDamageEvent const& DamageEvent,
AController* EventInstigator,
AActor* DamageCauser);
- DamageAmount : 데미지의 양 (float)
- DamageEvent : 데미지 타입과 관련 정보
- FDamage const& 과 const FDamage& 은 같은 의미다. 언리얼에서는 상수형참조라는 것을 더 명확히 하기 위해 const& 형식을 많이 쓴다.
- EventInstigator : 데미지를 일으킨 컨트롤러 (보통 플레이어나 AI)
- DamageCauser : 데미지를 일으킨 실제 액터 (예: 무기, 폭발물)
사용 예시
float AMyCharacter::TakeDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser)
{
float ActualDamage = Super::TakeDamage(DamageAmount, DamageEvent, EventInstigator, DamageCauser);
if (ActualDamage > 0.0f)
{
// 체력 감소
Health -= ActualDamage;
// 체력이 0 이하면 죽음 처리
if (Health <= 0.0f)
{
Die();
}
}
return ActualDamage;
}'언리얼엔진5 공부' 카테고리의 다른 글
| GameState (0) | 2025.10.17 |
|---|---|
| 이벤트로그 (0) | 2025.10.16 |
| 언리얼엔진5 공부언리얼엔진 C++ 챕터2 - 3. 캐릭터 동작 구현과 입력 처리하기 (0) | 2025.09.24 |
| 언리얼엔진5 공부언리얼엔진 C++ 챕터2 - 2. Enhanced_Input_System을_활용한_입력_매핑_구현하기 (0) | 2025.09.23 |
| 언리얼엔진 C++ 챕터2 - 1. Character_클래스를_활용한_캐릭터_구현하기 (2) | 2025.09.19 |