ue5-collision-and-trace-contract
Collision and Trace Contract
Collision configuration in UE5 has a property that makes it unusually easy to get wrong: it is global, shared, and mostly invisible from the code that depends on it. A query in one file behaves the way it does because of a channel definition in project settings and a response set on a component in a different asset. None of the three references the others, and all three have to agree.
The consequences are the two complaints that dominate hit-detection debugging — "the trace returns nothing" and "the trace hits things it should not" — and both are usually correct code running against a configuration nobody wrote down.
The second failure is worse and quieter: a fast object passing through thin geometry, which is not a configuration problem at all but a query-type problem, and which reproduces only at speed.