728x90
BeginPlay() 메서드를 수정하여 모든 컴포넌트를 가져오고 충돌을 무시하도록 설정:
void AYourActor::BeginPlay()
{
Super::BeginPlay();
// 액터의 모든 컴포넌트를 가져옴
TArray<UActorComponent*> Components;
GetComponents(Components);
// 컴포넌트를 순회하며 서로 충돌을 무시하도록 설정
for (int32 i = 0; i < Components.Num(); ++i)
{
UPrimitiveComponent* Component1 = Cast<UPrimitiveComponent>(Components[i]);
if (Component1)
{
for (int32 j = i + 1; j < Components.Num(); ++j)
{
UPrimitiveComponent* Component2 = Cast<UPrimitiveComponent>(Components[j]);
if (Component2)
{
Component1->IgnoreComponentWhenMoving(Component2, true);
Component2->IgnoreComponentWhenMoving(Component1, true);
}
}
}
}
}
이 코드에서:
- GetComponents(Components)는 액터에 부착된 모든 컴포넌트를 가져옵니다.
- 중첩된 루프는 각 컴포넌트 쌍을 순회합니다.
- Cast<UPrimitiveComponent>(Components[i])는 컴포넌트가 UPrimitiveComponent 타입인지 확인한 후 충돌 무시를 설정합니다.
이 방법을 통해 액터 내의 모든 프리미티브 컴포넌트가 서로 충돌을 무시하도록 설정할 수 있습니다.
728x90
'프로그래밍' 카테고리의 다른 글
구조체 타입 로그 출력 팁! in 언리얼 (0) | 2024.11.10 |
---|---|
컴포넌트의 하위(자식) 컴포넌트 찾기 in 언리얼 (0) | 2024.11.09 |
언리얼5에서 파라미터 전달 타이머 만들기 (1) | 2024.11.04 |
UHierarchicalInstancedStaticMeshComponent 에서 인스턴스 제거 시 인덱스 변화 (4) | 2024.10.18 |
IsValidLowLevel과 IsValid 함수 (0) | 2024.10.02 |