Roblox · Движение
Предмет-планер: пока он в руках и персонаж падает, падение медленное, а персонаж летит вперёд, туда, куда смотрит. Прыгай с высоты и планируй через всю карту.
Синим — что нужно создать.
StarterPack └─ Glider (Tool) ├─ Handle (Part) — крыло: широкая тонкая деталь, CanCollide выкл. └─ GliderLocal (LocalScript)
Где: StarterPack → Glider · LocalScript
Зачем: Медленное падение и полёт вперёд.
-- планер (Tool)
local tool = script.Parent
-- события каждого кадра
local RunService = game:GetService("RunService")
-- скорость падения с планером
local FALL_SPEED = 6
-- скорость полёта вперёд
local GLIDE_SPEED = 30
-- подписка на кадры
local connection = nil
-- взяли планер в руки
local function OnEquipped()
-- каждый кадр
connection = RunService.Heartbeat:Connect(function()
-- персонаж
local character = tool.Parent
-- Humanoid
local humanoid = character:FindFirstChildOfClass("Humanoid")
-- центр
local root = character:FindFirstChild("HumanoidRootPart")
-- нет персонажа
if not humanoid or not root then return end
-- стоит на земле — планер не работает
if humanoid.FloorMaterial ~= Enum.Material.Air then return end
-- падает быстрее, чем можно с планером
if root.AssemblyLinearVelocity.Y < -FALL_SPEED then
-- летим туда, куда смотрим
local forward = root.CFrame.LookVector * GLIDE_SPEED
-- медленно снижаемся и летим вперёд
root.AssemblyLinearVelocity = Vector3.new(forward.X, -FALL_SPEED, forward.Z)
-- конец проверки
end
-- конец обработчика
end)
-- конец функции
end
-- каждый раз, когда берут в руки
tool.Equipped:Connect(OnEquipped)
-- подобрали с земли: скрипт запустился уже в руках — Equipped был раньше
if tool.Parent and tool.Parent:FindFirstChildOfClass("Humanoid") then OnEquipped() end
-- убрали планер
tool.Unequipped:Connect(function()
-- больше не планируем
if connection then connection:Disconnect() end
-- забыли
connection = nil
-- конец обработчика
end)Запусти Play (или Run) и убедись: