Touched and TouchEnded events fire rapidly more than you think if it touches multiple times. Another idea is to use GetTouchingParts checking constantly with the RunService.Heartbeat(or similar) and then execute an event based on it. There are several other topics covering this problem and maybe you can try get a solution from there instead?