Read this post from the RBXDev First:
https://devforum.roblox.com/t/repro-touched-events-delayed/38118
Touched event in parts will cause lag when they collide and get fired multiple times. Causing the server's late respondent.
Like this script inside an NPC:
local NPC = script.Parent
local RootPart = NPC.HumanoidRootPart
RootPart.Touched:connect(function(part)
if not part.Parent then return end
if not part.Parent:FindFirstChild('Humanoid') then return end
local char = part.Parent
local hum = char.Humanoid
print('It is a player!')
end)
In-game the player touches the NPC. The server performance goes 30% down and the script printed 50x times.
But is there a way that make this still possible? If then, how?

1 comment
In case you were wondering, both legs are going on and off the part, causing it to fire multiple times.