In Unreal Engine, I have encountered an unexpected collision behavior involving a component with Simulate Physics enabled and all Collision Responses set to Ignore. This component has a child component that does not have Simulate Physics enabled but has all Collision Responses set to Block.
During gameplay, I dynamically change the Collision Responses of the child component to Ignore through scripting or blueprints. However, despite this change, the child component still exhibits collision behavior as if its Collision Responses were set to Block.
I have verified that the change to Ignore is indeed applied to the child component, but the physical collision still occurs. This behavior is inconsistent with my understanding of how collision responses and physics simulation should work in Unreal Engine.
Could this be due to an interaction between the parent and child component’s physics settings? Is there a known issue or specific behavior in Unreal Engine that could explain this?
I have tried simplifying the scene and isolating the components, but the issue persists. I am using Version: 5.4.4-35576357+++UE5+Release-5.4 , and I have not found any relevant information in the official documentation or community forums.
Can you provide any insights or suggestions on how to resolve this unexpected collision behavior?
I tried calling the RecreatePhysicsState
function on the children component , and it resolved the issue. However, there is a chance that it may trigger a crash error.
Error log:
LogWindows: Error: appError called: Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:D:\build++UE5\Sync\Engine\Source\Runtime\Core\Public\Containers\Array.h] [Line: 758]
Array index out of bounds: 8 into an array of size 5
STACK_TEXT:
000000e0669651e0 00007ff7
e04d14ac : 0042002f0065006d 00007ff7
ed2ddd30 000000e0669653a0 00000000
00000000 : KERNELBASE!RaiseException+0x69
000000e0669652c0 00007ff7
e03166df : 0000000000000010 00000004
00000000 000000e066965c20 000000e0
66965c20 : Racing_Win64_DebugGame!FWindowsErrorOutputDevice::Serialize+0x2fc
000000e066965be0 00007ff7
e023aced : 000000e066965810 00007ff7
ed28c2f0 00007ff7ed21b0a8 00007ff7
ed21a7f0 : Racing_Win64_DebugGame!FOutputDevice::LogfImpl+0x14f
000000e066966080 00007ff7
e023c37c : 00007ff7f090e4f8 00007ff7
e0b50b01 0000000000000000 00007ff7
00001558 : Racing_Win64_DebugGame!FDebug::AssertFailed+0xfd
000000e066968100 00007ff7
e27ba015 : 000041e55b932dcb 00007ff7
e008de7e 000000e066968310 00007ff7
ed21b030 : Racing_Win64_DebugGame!FDebug::CheckVerifyFailedImpl2+0xac
000000e066968170 00007ff7
e275221b : 00000277c155d600 000000e0
669682f0 0000027724c7a1a8 00000000
00000000 : Racing_Win64_DebugGame!Chaos::FDirtySet::SetNumDirtyShapes+0x75
000000e0669681f0 00007ff7
e25a6066 : 00000277e613b900 000000e0
669683a0 000000e0669683b0 00000277
aeec3300 : Racing_Win64_DebugGame!Chaos::UpdateShapesArrayFromGeometryImpl<TArray<TUniquePtr<Chaos::FShapeInstanceProxy,TDefaultDeleteChaos::FShapeInstanceProxy >,TSizedInlineAllocator<1,32,TSizedDefaultAllocator<32> > > >+0x88b
000000e066968380 00007ff7
e253c39f : 00000277e613b900 00000277
e613b900 0000000000000000 000000e0
669684e0 : Racing_Win64_DebugGame!Chaos::TGeometryParticle<double,3>::UpdateShapesArray+0xa6
000000e066968430 00007ff7
e259afb4 : 00000277a5b7ae00 00000000
00000001 00007ff7e2088850 00000000
00000000 : Racing_Win64_DebugGame!Chaos::TGeometryParticle<double,3>::ModifyGeometry<
Chaos::TGeometryParticle<double,3>::RemoveShapesAtSortedIndices’::2'::<lambda_1> >'::
2’::<lambda_3>::operator()Chaos::FParticleNonFrequentData+0x17f
000000e066968490 00007ff7
e2b1c356 : 0000027700000001 00000277
cbcd5cf0 0000000000000001 00000277
aeec3300 : Racing_Win64_DebugGame!Chaos::TGeometryParticle<double,3>::RemoveShape+0x174
000000e066968520 00007ff7
e69604f4 : 00000277c9869d50 000000e0
66968680 00000277c986c4c0 00000277
c986c040 : Racing_Win64_DebugGame!FChaosEngineInterface::DetachShape+0x36
000000e066968550 00007ff7
e6a2d1d5 : 0000000000000000 00000277
c9869eb0 000000e0669687d0 00000000
00000000 : Racing_Win64_DebugGame!FBodyInstance::OverlapTestForBodiesImpl<TSizedInlineAllocator<1,32,TSizedDefaultAllocator<32> > >'::
2’::<lambda_1>::operator()+0x16e4
000000e0669685f0 00007ff7
e69d1047 : 00000277c9869d50 00000277
c9869d50 0000000200000002 00000277
c9869d50 : Racing_Win64_DebugGame!FPhysInterface_Chaos::ExecuteWrite+0x55
000000e066968660 00007ff7
e6b7f731 : 0000000000000000 00000277
c986c390 000000e0669687d0 00000277
745e0008 : Racing_Win64_DebugGame!FBodyInstance::UnWeld+0x97
000000e0669686d0 00007ff7
e5f8641e : 0000000000000000 00007ff7
dff23eab 000002776cca36a0 00000277
c986c040 : Racing_Win64_DebugGame!UPrimitiveComponent::UnWeldFromParent+0x5f1
000000e066968820 00007ff7
e6086bbe : 00000277c986c040 00000277
c986c040 0000000000000000 00000000
00000000 : Racing_Win64_DebugGame!UPrimitiveComponent::OnDestroyPhysicsState+0x1e
000000e0669688c0 00007ff7
e5e5fa60 : 00270400000399ef 00007ff7
e5e834ab 3ff0000000000000 00000000
00000000 : Racing_Win64_DebugGame!UStaticMeshComponent::OnDestroyPhysicsState+0xe
000000e0669688f0 00007ff7
e5ea91de : 0000000000000001 00000277
c986c040 0000000000000000 00000000
00000000 : Racing_Win64_DebugGame!UActorComponent::DestroyPhysicsState+0x2c0
000000e066968a20 00007ff7
e7a09d8c : 0000000000000000 00007ff7
e0b54501 0000000000000000 000000e0
66968bc0 : Racing_Win64_DebugGame!UActorComponent::RecreatePhysicsState+0xe