I had to do some region3 related code, and to be honest; do not rely on Roblox’s Region3 and rather use a custom module for it.
Zone is probably the best one out there, you can simply reference when a player has entered/exited a zone with:
zone.playerEntered:Connect(function(player)
print(("%s entered the zone!"):format(player.Name))
end)
zone.playerExited:Connect(function(player)
print(("%s exited the zone!"):format(player.Name))
end)
TouchEnded is very unreliable and should be avoided as much as possible!