When a player is standing on a BasePart that is listening for a TouchEnded Event, if the player is moved off of the part using MoveTo() or CFrame, the event does not fire until the player goes to approach the brick that was listening for the TouchEnded event.
I made a Repro place: http://www.roblox.com/Strange-TouchEnded-event-behavior-place?id=172233277
1.) Walk on the Target Pad
2.) Press the MoveTo or CFrame Gui button.
3.) When TouchEnded successfully fires, a Hint is added to Workspace saying “Touch has ended”.
4.) From observation, this does not happen until you go to walk back onto the brick in a small area surrounding the brick.
I’m going to assume TouchEnded works like this, where the green brick symbolizes an area out side of the extents of the Part which will fire the TouchEnded event when walked into, with an area above the Part detecting this also:
But this doesn’t really suffice for when you want to move your players around.
As a less important side note, TouchEnded does not fire if a player standing on a brick leaves the game. Same also goes for if a Player’s character is removed (eg, when a character dies and their character is refreshed.)