[언리얼] Cpp - Sweep

gest·2026년 1월 7일

unreal

목록 보기
7/11

충돌감지 기능, 유니티에서는 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);![](https://velog.velcdn.com/images/gestgest/post/b79fbd34-85c3-443a-85fb-56f73c075ddb/image.gif)

		FVector force = GetActorForwardVector() * 500 + FVector(0, 0, 100);
		hitCharacter->LaunchCharacter(force, false, false);
		isAttack = true;
	}
}

0개의 댓글