Quick answer: Both components need bGenerateOverlapEvents = true, and each must have its collision response to the other’s channel set to Overlap (not Block, not Ignore).

A trigger volume bound to OnComponentBeginOverlap never fires even though a character clearly walks through it. The response is set to Ignore or one side has overlap events disabled.

Two Flags, Two Channels

For an overlap event to fire:

  1. Both components have Generate Overlap Events = true.
  2. Component A’s response to B’s ObjectType is Overlap.
  3. Component B’s response to A’s ObjectType is Overlap.

Block fires hit events instead. Ignore fires nothing. Both sides must opt in.

Check the Channel

Open each component’s Collision section. Verify Collision Enabled is at least Query Only, and inspect the channel matrix — the cross-cell between the two object types must say Overlap.

Custom Channels Are Common

Most projects add custom channels (Pickup, Interaction). Make sure both your trigger and the actor that should overlap use compatible channels — not the default Visibility/Camera ones.

Verify with showdebug collision

Run the game with showdebug collision. You can see exactly which channels each component blocks/overlaps in real time — far faster than guessing in the inspector.

Verifying

Walk through the trigger; BeginOverlap fires once. Walk out; EndOverlap fires. Block-only volumes still hit-stop the character without firing overlap.

“Overlap requires opt-in on both sides plus events enabled. Block, Ignore, or events-off and you get silence.”

Define a small set of custom channels with clear names — ‘Interaction’, ‘Trigger’, ‘Pickup’ — not the generic ones. The collision matrix becomes self-documenting.