You can use the module called “ZonePlus” that utilizes overlapparams to create zones very easily. You can read about it here: ZonePlus v3.2.0 | Construct dynamic zones and effectively determine players and parts within their boundaries
Heres a video to demonstrate
Code used in video:
local Container = workspace.Part
local Module = require(game.ReplicatedStorage.Zone)
local Zone = Module.new(Container)
Zone.playerEntered:Connect(function(Plr)
local Shield = Instance.new("ForceField")
Shield.Parent = Plr.Character
end)
Zone.playerExited:Connect(function(Plr)
Plr.Character:FindFirstChildOfClass("ForceField"):Destroy()
end)