Run it
Copy the script and paste it into your executor.
PathfindingService = :()
Players = :()
player = Players.LocalPlayer
()
character = player.Character
character
humanoid = character:()
rootPart = character:()
humanoid rootPart
character, humanoid, rootPart
stuckState =
lastJumpTime =
JUMP_COOLDOWN =
lastDirection = .(, , )
NavConfig = {
Active = ,
Radius = ,
WaypointVisuals = ,
StoppingDistance = ,
MaxStuckTime =
}
PLAYER_JUMP_HEIGHT =
PLAYER_WIDTH =
camera = .CurrentCamera
activeLines = {}
()
_, l (activeLines)
l l:()
activeLines = {}
(i)
activeLines[i]
activeLines[i]:()
activeLines[i] =
(points)
()
NavConfig.WaypointVisuals
i = , #points -
a = points[i].Position
b = points[i + ].Position
dist = (b - a).Magnitude
part = .()
part.Anchored =
part.CanCollide =
part.Material = .Material.Neon
part.Color = .(, , )
part.Size = .(, , dist)
part.CFrame = .(a, b) * .(, , -dist / )
part.Parent =
.(activeLines, part)
(targetPos, speed)
_, _, rootPart = ()
rootPart
speed = speed
camPos = camera.CFrame.Position
dir = targetPos - camPos
dir = .(dir.X, , dir.Z)
dir.Magnitude <
dir = dir.Unit
targetCF = .(camPos, camPos + dir)
camera.CFrame = camera.CFrame:(targetCF, / speed)
(humanoid)
now = .()
now - lastJumpTime < JUMP_COOLDOWN
humanoid.Jump =
lastJumpTime = now
(waypoints)
crumbs = {}
i = , #waypoints -
.(crumbs, {Position = waypoints[i].Position})
.(crumbs, {Position = waypoints[i + ].Position})
.(crumbs, {Position = waypoints[#waypoints].Position})
crumbs
(part)
name = part.Name:()
name:()
name:()
name:()
part:()
(pos)
boxSize = .(, , )
parts = :(.(pos), boxSize)
_, p (parts)
p:() ==
(p)
(mode, baseDir, rootPart)
mode ==
rootPart.Position + .(
.(-NavConfig.Radius, NavConfig.Radius),
,
.(-NavConfig.Radius, NavConfig.Radius)
)
mode ==
offset = baseDir.Unit * .(, )
rootPart.Position + offset + .(.(-, ), , .(-, ))
rootPart.Position + .(
.(-NavConfig.Radius, NavConfig.Radius),
,
.(-NavConfig.Radius, NavConfig.Radius)
)
(crumbs)
index =
stuckTime =
index <= #crumbs
NavConfig.Active
character, humanoid, rootPart = ()
character humanoid rootPart
.()
crumb = crumbs[index]
nextLook = crumbs[.(index, #crumbs)]
(nextLook.Position, )
target = crumb.Position
pos = rootPart.Position
delta = target - pos
planar = .(delta.X, , delta.Z)
planar.Magnitude < NavConfig.StoppingDistance
nextCrumb = crumbs[index + ]
nextCrumb
deltaY = nextCrumb.Position.Y - pos.Y
deltaY >
(humanoid)
(index)
index +=
stuckTime =
dir = planar.Magnitude > planar.Unit .zero
humanoid:(pos + dir * )
(pos - rootPart.Position).Magnitude >
stuckTime =
stuckTime +=
stuckTime > NavConfig.MaxStuckTime
.()
player.CharacterAdded:(()
()
stuckState =
lastDirection = .(, , )
)
.(()
()
NavConfig.Active .()
character, humanoid, rootPart = ()
character humanoid rootPart
.()
mode = stuckState %
destination = (mode, lastDirection, rootPart)
path = PathfindingService:({
AgentRadius = ,
AgentHeight = ,
AgentCanJump = ,
WaypointSpacing =
})
success = (()
path:(rootPart.Position, destination)
)
success path.Status == .PathStatus.Success
waypoints = path:()
crumbs = (waypoints)
(crumbs)
ok = (crumbs)
ok
stuckState +=
lastDirection = (destination - rootPart.Position)
()
.()
stuckState =
()
.()
stuckState +=
()
.()
)A script that creates a path in the game to automatically move like a person. It's open source, so you can use it, reprogram it, or improve it. If for any reason it doesn't start or work, please report it.

Universal