You can use an invisible part and whenever you want to test if the player is in the certain area use part:GetTouchingParts()
and check if the player’s HumanoidRootPart is in the dictionary it returns.
Hope that helped!
Edit: Don’t forget to assign a .Touched event that does nothing so a TouchInterest will be in the Part
Edit 2: Code Example
local Part = script.Parent
Part.Touched:Connect(function() end) -- Just for a TouchInterest to occur on a CanCollide false part
function CheckIfPlayerIsInArea(Part,Character)
local touching = Part:GetTouchingParts()
for i=1,#touching do
if touching[i] == Character.HumanoidRootPart then
return true
end
end
return false
end