Hey there!
So, when we have several objects in the game world, we want to determine how they interact with each other. A person can walk over a small bush, but not through a wall or a tree, and the bush could stop a rolling ball, for example.
The way that the Engine takes care of this is assigning every object to a channel (which we can think of determining its properties) and also determining how it interacts with objects on every other channel. There can be three types of interactions: ignore (when nothing happen), overlap (when things donβt block each other, but cause an effect while in contact; for example, when a pawn walks over fire) and block (when things cease their movement, like when a stone hits a wall). Overlap-type collisions generate Overlap events, and block-type collisions generate Hit events.
When a collision happens, the engine checks how each of the two parts interact with the other and uses the least restrictive action. This makes sense if we think that contact forces between bodies are reciprocal.