NPC-патруль по точкам
Охранник ходит между точками маршрута и начинает путь сначала.
NPC идёт по точкам P1, P2, P3 и снова возвращается к P1. Используется PathfindingService для обхода препятствий.
1. Подготовьте объект
Где разместить: Обычный Script в ServerScriptService
Создайте NPC через Avatar → Rig Builder, назовите модель GuardNPC; убедитесь, что HumanoidRootPart не Anchored.
В Workspace создайте Folder PatrolPoints с тремя Part: P1, P2, P3. Сделайте их невидимыми (Transparency = 1), Anchored = true, CanCollide = false.
В ServerScriptService вставьте обычный Script. Убедитесь, что между точками есть проход.
2. Вставьте код
local PathfindingService = game:GetService("PathfindingService")
local npc = workspace:WaitForChild("GuardNPC")
local humanoid = npc:WaitForChild("Humanoid")
local root = npc:WaitForChild("HumanoidRootPart")
local folder = workspace:WaitForChild("PatrolPoints")
local points = {folder:WaitForChild("P1"), folder:WaitForChild("P2"), folder:WaitForChild("P3")}
local function moveTo(target)
local path = PathfindingService:CreatePath({AgentRadius = 2, AgentHeight = 5, AgentCanJump = true})
local ok, err = pcall(function() path:ComputeAsync(root.Position, target.Position) end)
if not ok or path.Status ~= Enum.PathStatus.Success then
warn("Не удалось построить путь: " .. tostring(err))
return
end
for _, waypoint in ipairs(path:GetWaypoints()) do
if waypoint.Action == Enum.PathWaypointAction.Jump then humanoid.Jump = true end
humanoid:MoveTo(waypoint.Position)
if not humanoid.MoveToFinished:Wait() then return end
end
end
while humanoid.Health > 0 do
for _, point in ipairs(points) do
if humanoid.Health <= 0 then break end
moveTo(point)
task.wait(1)
end
end
3. Проверьте в игре
Нажмите Play в Roblox Studio и проверьте действие механики. Если механика не работает, откройте окно Output и проверьте тип скрипта, его расположение и названия объектов.
Когда проверите механику в Roblox Studio, отметьте практику как выполненную. Отметка хранится только в этом браузере, не в личном кабинете.
Добавляйте механики по одной и проверяйте окно Output. Не создавайте несколько одинаковых систем монет или интерфейсов; скрипты, меняющие WalkSpeed, прыжок или освещение, могут влиять друг на друга.
Измените скорость NPC через humanoid.WalkSpeed = 10.
Добавьте четвёртую точку P4 в маршрут и в список points.
Постройте музей, который охраняет NPC с фонариком.
4. Проверьте себя
Что обозначают точки P1, P2 и P3?
У NPC должен быть Humanoid, HumanoidRootPart и незаанкеренные части. Точки должны быть достижимы по полу. Если PathfindingService не строит путь, увеличьте расстояние от стен.