TouchEnded being fired even while still touching the part

Because of the way touch physics work with the humanoid object, the touched event is not recommended for use without an appropriate workaround (such as creating an invisible detector some distance below the HumanoidRootPart).

For circumstances like this, you should be downcasting (shooting a raycast downward from the HumanoidRootPart). This is one of the most accurate workarounds to relying on Humanoid touch events. Fire a ray down every frame or so, verify if there’s a part and it’s an interaction error, then act.

There are other solutions here, though to address them:

  • Verifying if there’s a Humanoid in a Touched event is pointless in this scenario because the issue is the touch physics itself, not outside interference.

  • Debounce is a state boolean, not a solution.

  • Region3 is a bad solution here. Region3 is typically for checking a region and if a certain item is within that region. Given the image in the screenshot, a player can’t be registered in the region unless you extend the region rectangle upward.

    • Checking a HumanoidRootPart’s X and Z coordinates is also acceptable, but this makes the Y dimension negligible and thus allowing you to fish at any height so long as you’re in the 2D vicinity of the interaction area.