Roblox Studio thinks that touch ends when the player is moving.
Yeah the Touch event isn’t that good for such things. What you could do is make a transparent and non collidable part that would act like a hit box so you could check if the player is touching it or not. This way it’ll prevent the script to stop because the player moved. I hope I made it clear, if you have any questions feel free to ask!
As @hapygamer2 said, Touched event is not that good for such things. You can use GetTouchingParts for an invisible hitbox.