script.Parent.Touched:Connect(function()
for i, hit in pairs(script.Parent:GetTouchingParts())do
print(hit.Name)
if game.Players:GetPlayerFromCharacter(hit.Parent) and script.Parent.Active.Value == true then
if workspace.RageMode.Value == false then
hit.Parent.Humanoid:TakeDamage(50)
script.Parent.Active.Value = false
else
hit.Parent.Humanoid:TakeDamage(100)
script.Parent.Active.Value = false
end
end
end
end)
(This script is related to a beam that surrounds you, and you take damage if you're inside the beam.
For some reason, the player has to be moving for them to take damage, because standing still results in immunity, and I'm not sure why? It's not related to any errors, I'm guessing it's an updated part thing.

4 comments
Thats why .Touched is depressing... Sadly I had this problem, to solve it I just put it all in a loop with a coroutine..
You could try to find the character's position relative to the beam and if the position of the character is within the beam, take damage with a loop, and if the player gets out of it, then stop dealing damage. This function would be activated first by the touched event.
use rays.
Oh I think I found a better solution, haven't used the touched event in a few months, so idk if it will work, but I'm going to type it up anyway.