충돌감지 기능, 유니티에서는 RayCast라고 생각하면 이해하기 편하다.

Sweep함수를 이용하여 Player에게 데미지를 입히고 충격 물리 상호작용을 구현할 것이다.
//여기에 함수 죄다 넣어야 함
TArray<FHitResult> hitResults;
FVector start = GetActorLocation();
FVector end = start + (GetActorForwardVector() * 150.0f);
float radius = 25.0f;
//충돌 범주 구
FCollisionShape Sphere = FCollisionShape::MakeSphere(radius);
FCollisionQueryParams queryParams;
queryParams.AddIgnoredActor(this);
bool bHit = GetWorld()->SweepMultiByChannel(
hitResults,
start,
end,
FQuat::Identity,
ECC_Pawn, //TraceChannel
FCollisionShape::MakeSphere(radius),
queryParams
);
for (const FHitResult& hit : hitResults)
{
//대체로 Character다. 나는 Character를 상속받은 AMyPlayer를 썼다.
AMyPlayer* hitCharacter = Cast<AMyPlayer>(hit.GetActor());
if (hitCharacter && hitCharacter->IsPlayerControlled())
{
UE_LOG(LogTemp, Log, TEXT("Hit Player!"));
hitCharacter->AddHP(-PPAPDamage);
FVector force = GetActorForwardVector() * 500 + FVector(0, 0, 100);
hitCharacter->LaunchCharacter(force, false, false);
isAttack = true;
}
}