There appears to be an issue with how raycasts are performed within PxScene. When performing the trace, only the collision response for the first ECollisionChannel seems to be considered. If all collision channels are set to ignore, then only the channel on which the trace is being performed is set to block, anything that should return a blocking hit on the trace will be ignored.
In the test project, a custom collision channel is being used (ECC_GameTraceChannel5, named "SpawnerTrace"), but I suspect the same results will be seen when tracing on any channel other than ECC_WorldStatic. Before the trace is performed, the collision response for all channels is set to ECR_Ignore, then the collision response for the channel the trace is being performed on is set to ECR_Block. When debugging I could see that this setting was applied appropriately to the collision response array. However, I could not debug beyond the call to PxScene::raycast (line 774 in PhysXCollision.cpp at CL 3774039).
While testing, I tried setting only the ECC_WorldStatic channel to ECR_Block, and this resulted in a blocking hit being detected along the trace even though the custom channel being used for the trace was still set to ECR_Ignore.
REGRESSION:
No. The same behavior was observed in 4.16.3.
RESULT:
The message "Miss!" appears in the top left corner of the screen.
EXPECTED:
The message "Hit!" appears in the top left corner of the screen.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-52793 in the post.
3 |
Component | UE - Simulation - Physics |
---|---|
Affects Versions | 4.16.3, 4.17.2, 4.19 |
Created | Nov 28, 2017 |
---|---|
Resolved | Aug 18, 2021 |
Updated | Aug 18, 2021 |