어떤 게임에서나 결코 빼놓을 수 없는 기능은 충돌처리라고 생각한다.

정말 많은 케이스의 프리셋을 제공하지만, 과연 다 써볼 일이 있을까 싶다.
일단 정말 많고 복잡해 보이지만 파악해보면 일단 Ignore, Block, Overlap 키워드만 파악해도 절반 정도는 알 것 같다.
Ignore : 무시
Overlap : 겹쳤을 때
Block : 충돌
BoxCollision->SetCollisionProfileName(TEXT("OverlapAllDynamic"));
void AMyActor::OnHit(
UPrimitiveComponent* HitComp, AActor* OtherActor,
UPrimitiveComponent* OtherComp, FVector NormalImpulse,
const FHitResult& Hit)
{
UE_LOG(LogTemp, Warning, TEXT("충돌 발생: %s"), *OtherActor->GetName());
}
// 바인딩
MeshComponent->OnComponentHit.AddDynamic(this, &AMyActor::OnHit);
히트 바인딩, 대충 유니티로 따지자면 OnCollisionEnter로 봐야될 것 같다.
void AMyActor::OnOverlapBegin(
UPrimitiveComponent* OverlappedComp, AActor* OtherActor,
UPrimitiveComponent* OtherComp, int32 OtherBodyIndex,
bool bFromSweep, const FHitResult& SweepResult)
{
UE_LOG(LogTemp, Warning, TEXT("오버랩 감지: %s"), *OtherActor->GetName());
}
// 바인딩
CollisionComponent->OnComponentBeginOverlap.AddDynamic(this, &AMyActor::OnOverlapBegin);
Overlap 바인딩, 유니티로 따지면 OnTriggerEnter로 보는게 적당할 듯 싶다.