▣ 코드설명
FDamageEvent() 함수를 사용하기 위해서는 Engine/DamageEvents.h 헤더를 추가해야 합니다.
StartLocation: 좀비 메쉬의 hand_r라는 소켓 위치를 가져옵니다. 이는 좀비의 손 위치를 기준으로 충돌을 시작하는 지점을 설정합니다.
EndLocation: SphereTrace의 시작과 끝 지점을 동일하게 설정(구체 중심). 여기서는 한 지점에서만 충돌을 검사하기 때문에 동일한 값을 사용합니다.
SphereRadius: 충돌 체크를 수행할 Sphere의 반지름을 설정합니다. 여기서는 70.0f로 설정되어 있습니다.
Params: 충돌 계산 중에 특정 액터를 무시하도록 설정합니다. 여기서는 NormalZombie(자기 자신)를 무시하도록 추가했습니다.
SweepSingleByChannel 함수:
Sphere(구체) 모양으로 특정 채널(ECC_GameTraceChannel4)에서 충돌을 체크합니다.
StartLocation에서 EndLocation까지 Sweep(확인)을 진행하며, 충돌 여부를 확인합니다.
FQuat::Identity는 회전값으로, 이 경우 구체가 회전 없이 기본 방향으로 작동합니다.
결과는 HitResult에 저장되며, 충돌한 대상에 대한 정보가 포함됩니다.
bHit:
충돌 여부를 나타냅니다. true라면 충돌이 발생했고, false라면 충돌이 없습니다.
HitResult.GetActor():
충돌한 액터를 가져옵니다.
HitActor는 충돌한 액터를 가리킵니다.
조건 체크:
bHit: 충돌이 발생했는지 확인.
HitActor: 충돌한 액터가 유효한지 확인.
HitActor->IsA<APlayerCharacter>(): 충돌한 액터가 APlayerCharacter의 인스턴스인지 확인합니다.
디버그 메시지:
충돌한 액터의 이름을 출력합니다. (*HitActor->GetName())
Cast<APlayerCharacter>(HitActor):
HitActor를 APlayerCharacter로 캐스팅합니다. 성공하면 PlayerCharacter에 저장됩니다.
TakeDamage 호출:
PlayerCharacter의 TakeDamage 함수가 호출되어 데미지를 적용합니다.
매개변수:
Damage: 데미지 양.
FDamageEvent(): 데미지 이벤트 객체. 기본 이벤트 객체를 생성하여 전달.
NormalZombie->GetController(): 데미지를 입힌 좀비의 컨트롤러.
NormalZombie: 데미지를 입힌 좀비 액터.
'[ Unreal5 ] > - 언리얼엔진5 실습' 카테고리의 다른 글
언리얼엔진5 뷰포트에서 마우스 커서 사라지는 버그 해결법 (0) | 2024.11.27 |
---|---|
언리얼엔진5 c++ Input Hold (0) | 2024.11.26 |
언리얼엔진5 c++ LoadClass (0) | 2024.11.24 |
언리얼엔진5 c++ GEngine->AddOnScreenDebugMessage (0) | 2024.11.23 |
언리얼엔진5 c++ Widget Image 투명도 설정 (0) | 2024.11.22 |
댓글