If you read the documentation on SweepMultiByChannel you’ll notice that it says “return all initial overlaps using a specific channel (including blocking) if requested, then overlapping hits and then first blocking hit”. Since your character only overlaps with this trace channel that means your sweep is going to keep passing through your character, returning an event for every physical body in the character that it overlaps with. If you want to only have one event be returned, either set the trace channel to block on your character or use a different trace/sweep function.