When changing an object's position in the world, directly setting it's position will shift it above anything it collides with.
If you change it's CFrame instead, it will retain a raw position without being nudged, unless it's unanchored of course
switch.CFrame = CFrame.new(-3.05, 5.9, -78.95)
I would also like to suggest that you change it's CFrame on a relative basis so that if you want to move the switch, you don't have to edit the script.
Example:
switch.CFrame = switch.CFrame + Vector3.new(0,1,0) --Will shift the switch up one unit |