728x90
Unreal Engine 5 (UE5)에서 특정 조건에서 물리 시뮬레이션을 일시 중지하거나 "슬립" 상태로 만들려면 블루프린트 또는 C++ 코드를 사용할 수 있습니다.
아래의 예는 속도가 30 단위 이하일 때 물리 시뮬레이션을 일시 중지하도록 코드를 수정하려면, GetComponentVelocity() 함수를 사용하여 컴포넌트의 속도를 확인할 수 있습니다.
// 기본값 설정
AYourCustomActor::AYourCustomActor()
{
PrimaryActorTick.bCanEverTick = true;
}
// 매 프레임 호출
void AYourCustomActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
// 속도가 임계값 이하인지 확인
if (ShouldPausePhysics())
{
PausePhysics();
}
}
bool AYourCustomActor::ShouldPausePhysics()
{
TArray<UPrimitiveComponent*> Components;
GetComponents<UPrimitiveComponent>(Components);
for (UPrimitiveComponent* Component : Components)
{
if (Component->IsSimulatingPhysics())
{
FVector Velocity = Component->GetComponentVelocity();
if (Velocity.Size() < 30.0f)
{
return true;
}
}
}
return false;
}
void AYourCustomActor::PausePhysics()
{
TArray<UPrimitiveComponent*> Components;
GetComponents<UPrimitiveComponent>(Components);
for (UPrimitiveComponent* Component : Components)
{
if (Component->IsSimulatingPhysics())
{
Component->SetSimulatePhysics(false);
}
}
// 선택적으로, 일정 시간 후 물리 시뮬레이션을 재개하는 타이머 설정
GetWorld()->GetTimerManager().SetTimer(UnusedHandle, this, &AYourCustomActor::ResumePhysics, 5.0f, false);
}
void AYourCustomActor::ResumePhysics()
{
TArray<UPrimitiveComponent*> Components;
GetComponents<UPrimitiveComponent>(Components);
for (UPrimitiveComponent* Component : Components)
{
if (!Component->IsSimulatingPhysics())
{
Component->SetSimulatePhysics(true);
}
}
}
이 코드에서는:
ShouldPausePhysics()는 물리 시뮬레이션을 일시 중지할 조건을 위한 자리 표시자입니다.
- ShouldPausePhysics() 함수가 컴포넌트의 속도가 30 단위 이하인지 확인합니다.
- 속도가 임계값 이하일 경우 true를 반환하여 PausePhysics() 함수를 호출합니다.
PausePhysics()는 액터의 모든 컴포넌트에 대해 물리 시뮬레이션을 중지합니다.
ResumePhysics()는 일정 시간(이 경우 5초) 후에 물리 시뮬레이션을 재개합니다.
이 코드가 물리 시뮬레이션을 속도가 낮을 때 일시 중지하는 데 도움이 되길 바랍니다. 추가적인 도움이 필요하시면 언제든지 말씀해 주세요!
728x90
'프로그래밍' 카테고리의 다른 글
언리얼 엔진 5에서의 스윕 테스트 함수들: SweepMultiByObjectType, SweepTestByObjectType (1) | 2024.11.17 |
---|---|
"Warning: FNetGUIDCache::SupportsObject: PhysicsConstraintComponent" 오류 해석 및 해결 방법 in 언리얼5 (0) | 2024.11.16 |
UPrimitiveComponent와 USceneComponent의 차이점 in 언리얼5 (1) | 2024.11.12 |
구조체 타입 로그 출력 팁! in 언리얼 (0) | 2024.11.10 |
컴포넌트의 하위(자식) 컴포넌트 찾기 in 언리얼 (0) | 2024.11.09 |