Roblox · Движение
Нажми прыжок ещё раз в воздухе — персонаж подпрыгнет снова. Высота второго прыжка — текущая: с энергетиком выше, у замороженного прыжка нет.
Синим — что нужно создать.
StarterPlayer └─ StarterCharacterScripts — копируется в каждого нового персонажа └─ DoubleJump (LocalScript)
Где: StarterPlayer → StarterCharacterScripts · LocalScript
Зачем: Разрешает AIR_JUMPS прыжков в воздухе; после приземления — снова.
-- ввод
local UIS = game:GetService("UserInputService")
-- персонаж (скрипт кладётся в него)
local character = script.Parent
-- его Humanoid
local humanoid = character:WaitForChild("Humanoid")
-- сколько прыжков в воздухе (2 — тройной прыжок)
local AIR_JUMPS = 1
-- осталось прыжков в воздухе
local jumpsLeft = AIR_JUMPS
-- персонаж сменил состояние
humanoid.StateChanged:Connect(function(_, new)
-- приземлился
if new == Enum.HumanoidStateType.Landed then
-- прыжки в воздухе снова доступны
jumpsLeft = AIR_JUMPS
-- конец проверки
end
-- конец обработчика
end)
-- игрок нажал прыжок (пробел или кнопку на телефоне)
UIS.JumpRequest:Connect(function()
-- персонаж в воздухе?
local inAir = humanoid:GetState() == Enum.HumanoidStateType.Freefall
-- в воздухе, прыжки есть, не заморожен
if inAir and jumpsLeft > 0 and humanoid.JumpHeight > 0 then
-- тратим прыжок
jumpsLeft -= 1
-- прыгаем прямо в воздухе — на текущую высоту прыжка
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
-- конец проверки
end
-- конец обработчика
end)Запусти Play (или Run) и убедись: