프리셋
언리얼에서 엔진 - 콜리전
Object Channels - 어떤 오브젝트에 대한
Trace Channels - 어떤 행동에 대한
Preset - by Profile이랑 동일
{Box / Capsule /Sphere} / Line
Ignore - 아예 Trace에 대해 무시 (관통 가능)
Overlap - Trace에 대해 hit 될 수 있음
Block - Trace 에 대해 막아버림 (그 뒤에 포착될 수 있는걸 무시 -> 관통이 안 됨)
Pawn 이라는 오브젝트 타입은 TestTraceChannel 에 대해 ignore 되고,
abc 이라는 오브젝트 타입에 대해서는 block이 되도록 설정 할 수 있는 프리셋이 된다.
흔히 Actor 디테일에서 볼수있는 콜리전 프리셋을 일일이 지정하기보다 프리셋을 하나 만들어서 사용하는것이 변경에 유연
해당 컴포넌트의 콜리젼 프리셋 설정 (엔진 - 콜리전 - 프리셋)
UFUNCTION(BlueprintCallable, Category="Collision")
ENGINE_API virtual void SetCollisionProfileName(FName InCollisionProfileName, bool bUpdateOverlaps=true);
// ex)
Component->SetCollisionProfileName(TEXT("Object_CameraBlock"));
Component->SetCollisionProfileName(TEXT("LayObject"));
충돌 검사
Line: Start - End 선 에서 충돌한 오브젝트 판별
Sweep: Start - End 선 에서 지정한 CollisionShape 로 충돌한 오브젝트 판별
Overlap: 두 오브젝트가 충돌하였는지 판별
ByChannel 의 경우 직접 ECollisionChannel을 설정해주면되고,
bool LineTraceSingleByChannel(struct FHitResult& OutHit,const FVector& Start,const FVector& End,ECollisionChannel TraceChannel,const FCollisionQueryParams& Params = FCollisionQueryParams::DefaultQueryParam, const FCollisionResponseParams& ResponseParam = FCollisionResponseParams::DefaultResponseParam) const;
bool SweepSingleByChannel(struct FHitResult& OutHit, const FVector& Start, const FVector& End, const FQuat& Rot, ECollisionChannel TraceChannel, const FCollisionShape& CollisionShape, const FCollisionQueryParams& Params = FCollisionQueryParams::DefaultQueryParam, const FCollisionResponseParams& ResponseParam = FCollisionResponseParams::DefaultResponseParam) const;
bool OverlapMultiByChannel(TArray<struct FOverlapResult>& OutOverlaps, const FVector& Pos, const FQuat& Rot, ECollisionChannel TraceChannel, const FCollisionShape& CollisionShape, const FCollisionQueryParams& Params = FCollisionQueryParams::DefaultQueryParam, const FCollisionResponseParams& ResponseParam = FCollisionResponseParams::DefaultResponseParam) const;
bool UWorld::LineTraceSingleByProfile(struct FHitResult& OutHit, const FVector& Start, const FVector& End, FName ProfileName, const struct FCollisionQueryParams& Params) const
{
ECollisionChannel TraceChannel;
FCollisionResponseParams ResponseParam;
GetCollisionProfileChannelAndResponseParams(ProfileName, TraceChannel, ResponseParam);
return LineTraceSingleByChannel(OutHit, Start, End, TraceChannel, Params, ResponseParam);
}
profile 같은경우는 콜리전 프리셋 이름을 입력하면 ECollisionChannel 을 찾아서 TraceChannel에 반환해 준다
// ex)
GetWorld()->LineTraceSingleByProfile(Result, FVector{ 0.f,0.f,0.f }, FVector{ 0.f,0.f,0.f }, TEXT("MapObject"));
ByChannel - CollisionChannel (Object Channel / Trace Channel)
ByObjectType -
ByProfile - PresetName
LineTraceSingleByChannel
LineTraceSingleByObjectType
LineTraceSingleByProfile
+Multi
SweepSingleByChannel
SweepSingleByObjectType
SweepSingleByProfile
+Multi
OverlapMultiByChannel
OverlapMultiByObjectType
OverlapMultiByProfile
'언리얼 > 언리얼 기능' 카테고리의 다른 글
UE Json (0) | 2025.04.04 |
---|---|
쿼터니언 정규화 (0) | 2024.11.14 |
FRotator (0) | 2024.09.11 |
언리얼 보간 (Interpolation) (1) | 2023.10.19 |
UStruct static_cast (0) | 2023.09.04 |