WalkToPoint describes the 3D position in space that a humanoid is trying to reach, after having been prompted to do so by the
If a humanoid’s
Humanoid/WalkToPart is set, the goal is set by transforming WalkToPoint relative to the parts position and rotation. If WalkToPart is not set, then the humanoid will try to reach the 3D position specified by WalkToPoint directly.
- The value of WalkToPoint must be changed to a different value in order for the humanoid to start walking towards it.
- If you want to make a humanoid walk to
0,0,0, you should use the Humanoid’s MoveTo function.
- This may be changed in the future.
- The reach goal state of a humanoid will timeout after 8 seconds if it doesn’t reach its goal.
- This is done so that NPCs won’t get stuck waiting for
- If you don’t want this to happen, you should repeatedly call MoveTo so that the timeout will keep resetting.
Humanoid MoveTo Without Time out
This code sample includes a function that avoids the 8 second timeout on
Humanoid/MoveTo by calling
Humanoid/MoveTo again before the timeout elapses. It also includes an optional andThen parameter where developers can pass a function to be called when the humanoid reaches its destination.
local function moveTo(humanoid, targetPoint, andThen) local targetReached = false -- listen for the humanoid reaching its target local connection connection = humanoid.MoveToFinished:Connect(function(reached) targetReached = true connection:Disconnect() connection = nil if andThen then andThen() end end) -- start walking humanoid:MoveTo(targetPoint) -- execute on a new thread so as to not yield function spawn(function() while not targetReached do -- does the humanoid still exist? if not (humanoid and humanoid.Parent) then break end -- has the target changed? if humanoid.WalkToPoint ~= targetPoint then break end -- refresh the timeout humanoid:MoveTo(targetPoint) wait(6) end -- disconnect the connection if it is still connected if connection then connection:Disconnect() connection = nil end end) end