开始之前
理解 Humanoid、数组和循环。新建 Lesson23,保持地面宽阔平整。
Roblox Studio · 第 23 课
用 Rig、Humanoid:MoveTo() 和 MoveToFinished,制作能报告失败的巡逻机器人。
Course overview
NPC 是不由真实玩家直接操作的角色。你可以给它一条巡逻路线,让它逐个走到指定位置。
这一课先做没有墙的路线。Humanoid:MoveTo() 会要求角色走向目标,但不会自动为复杂迷宫规划绕路。下一课才加入自动寻路。
理解 Humanoid、数组和循环。新建 Lesson23,保持地面宽阔平整。
一个依次走向 Point1、Point2、Point3 的机器人,遇到失败会停止并报告。
空地上能走完;被墙挡住时不会假装成功;路线顺序明确。

Learning route
每完成一小步,就测试一次。先说出你预计会看到什么,再用 Play 和 Output 检查,不用急着一次写完所有代码。
从 Studio 的角色工具中打开 Rig Builder,插入一个基础 R15 Rig,命名 PatrolBot。不同界面版本可能把工具放在 Avatar 或角色相关栏中,按 Rig Builder 名称寻找。
不要依赖 GetChildren 返回的顺序恰好等于名称顺序。这里明确列出 Point1、Point2、Point3,让路线可预测。
MoveTo 发出移动请求后不会等到抵达才返回。MoveToFinished:Wait() 则等待结果,并告诉你是否到达。
SetNetworkOwner(nil) 把这个未锚定角色装配体的网络物理控制交给服务器,有助于课堂中稳定观察同一个 NPC。它不会替你修复错误的关节或锚定设置。
在第一段路中放一堵宽墙,观察机器人是否停下并报告失败。不要期待 MoveTo 自己规划一条复杂绕路。
Step by step
从 Studio 的角色工具中打开 Rig Builder,插入一个基础 R15 Rig,命名 PatrolBot。不同界面版本可能把工具放在 Avatar 或角色相关栏中,按 Rig Builder 名称寻找。
模型里需要 Humanoid 与 HumanoidRootPart。不要把机器人所有零件 Anchored,否则 Humanoid 无法驱动它行走。

Step by step
不要依赖 GetChildren 返回的顺序恰好等于名称顺序。这里明确列出 Point1、Point2、Point3,让路线可预测。
WalkSpeed 设为 8,机器人走慢一点,你就有时间观察。场景物体太远或走不到时,MoveToFinished 可能报告 false。
Step by step
MoveTo 发出移动请求后不会等到抵达才返回。MoveToFinished:Wait() 则等待结果,并告诉你是否到达。
本课只巡逻一轮。失败就 return,Output 会指出是哪一站,不会无限追着一个不可能到达的位置跑。
local bot = workspace:WaitForChild("PatrolBot")
local humanoid = bot:WaitForChild("Humanoid")
local root = bot:WaitForChild("HumanoidRootPart")
root:SetNetworkOwner(nil)
humanoid.WalkSpeed = 8
local route = {
workspace:WaitForChild("Point1"),
workspace:WaitForChild("Point2"),
workspace:WaitForChild("Point3"),
}
for index, point in ipairs(route) do
if humanoid.Health <= 0 then return end
print("Moving to", index, point.Name)
humanoid:MoveTo(point.Position)
local reached = humanoid.MoveToFinished:Wait()
if not reached then
warn("Could not reach " .. point.Name)
return
end
end
print("Patrol complete")
Step by step
SetNetworkOwner(nil) 把这个未锚定角色装配体的网络物理控制交给服务器,有助于课堂中稳定观察同一个 NPC。它不会替你修复错误的关节或锚定设置。
基础 Rig 可能像滑行一样移动,因为走路动画还没配置。本课检查的是位置与抵达结果,不把动画缺失误认为 MoveTo 失败。
Step by step
在第一段路中放一堵宽墙,观察机器人是否停下并报告失败。不要期待 MoveTo 自己规划一条复杂绕路。
这个失败案例会成为第 24 课的起点。先保存一份空地上能成功的版本,再保存有墙的测试副本。
Homework
让三个路标围成一个小三角形,保持可直接行走。
保存一条无法抵达时的 Output 消息,并写出原因。
把起点加为第四个路标,让机器人一轮结束后回到营地。
Exit questions
不会,需要通过 MoveToFinished 等待结果。
不代表,位移与动画是不同系统。
Humanoid 需要能够运动的角色装配体。
不能保证,复杂路径需要 PathfindingService 等规划方式。
Explore further
正文代码可以直接复制。先确认脚本类型、放置位置,以及这段代码是完整版本还是小实验;不要把同一脚本的多个版本叠加运行。界面参考图已标注来源,图中的对象名可能与本课不同,请以操作步骤为准。