I am now testing various methods, but when I run GetPartsInPart on each of the 40 or so unions, it always returns a “Part parameter must be BasePart” error in one random location.
Is there a limit to the number of parts that can be executed?
You could buffer parts that changed their position recently. And then check their new position, to see if they’re within the zone. That way you don’t have to check every part