Roblox · Движение
Q — короткий рывок туда, куда идёшь (или вперёд, если стоишь). Откат 1,2 секунды. Замороженный персонаж рвануться не может.
Синим — что нужно создать.
StarterPlayer
└─ StarterPlayerScripts
└─ DashLocal (LocalScript)
Где: StarterPlayer → StarterPlayerScripts · LocalScript
Зачем: Q — рывок по направлению движения с откатом.
-- клавиши и кнопки на телефоне
local CAS = game:GetService("ContextActionService")
-- удаление по таймеру
local Debris = game:GetService("Debris")
-- этот игрок
local player = game.Players.LocalPlayer
-- скорость рывка
local DASH_SPEED = 70
-- длительность рывка в секундах
local DASH_TIME = 0.15
-- секунд до следующего рывка
local COOLDOWN = 1.2
-- время прошлого рывка
local lastDash = 0
-- клавиша Q (на телефоне — кнопка «Рывок»)
CAS:BindAction("Dash", function(_, state)
-- реагируем только на нажатие
if state ~= Enum.UserInputState.Begin then return end
-- персонаж
local character = player.Character
-- его Humanoid
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
-- его центр
local root = character and character:FindFirstChild("HumanoidRootPart")
-- нет персонажа или он мёртв
if not humanoid or not root or humanoid.Health <= 0 then return end
-- заморожен — рывка нет
if humanoid.WalkSpeed == 0 then return end
-- откат ещё не прошёл
if os.clock() - lastDash < COOLDOWN then return end
-- запоминаем
lastDash = os.clock()
-- куда идёт игрок
local dir = humanoid.MoveDirection
-- стоит — рывок вперёд, куда смотрит
if dir.Magnitude < 0.1 then dir = root.CFrame.LookVector end
-- только по земле
local flat = dir * Vector3.new(1, 0, 1)
-- направления нет
if flat.Magnitude < 0.1 then return end
-- точка приложения
local attachment = Instance.new("Attachment")
-- в центр персонажа
attachment.Parent = root
-- толчок; физику своего персонажа считает его компьютер — работает и без сервера
local push = Instance.new("LinearVelocity")
-- куда приложен
push.Attachment0 = attachment
-- без ограничения силы
push.MaxForce = math.huge
-- вперёд с нужной скоростью
push.VectorVelocity = flat.Unit * DASH_SPEED
-- толкаем
push.Parent = root
-- рывок короткий
Debris:AddItem(push, DASH_TIME)
-- убираем и точку
Debris:AddItem(attachment, DASH_TIME)
-- true — кнопка на телефоне
end, true, Enum.KeyCode.Q)
-- надпись на кнопке
CAS:SetTitle("Dash", "Рывок")Запусти Play (или Run) и убедись: