Roblox · Движение

Двойной прыжок

Нажми прыжок ещё раз в воздухе — персонаж подпрыгнет снова. Высота второго прыжка — текущая: с энергетиком выше, у замороженного прыжка нет.

Структура

Синим — что нужно создать.

StarterPlayer
└─ StarterCharacterScripts — копируется в каждого нового персонажа
   └─ DoubleJump (LocalScript)

Шаги

  1. StarterPlayer → StarterCharacterScripts → «+» → LocalScript, переименуй в DoubleJump, вставь текст DoubleJump из «Скриптов».
  2. Сервер не нужен: свой персонаж прыгает на своём компьютере, остальные видят результат.
  3. Скрипт — в StarterCharacterScripts: он кладётся в персонажа заново после каждой смерти.
  4. AIR_JUMPS = 2 — тройной прыжок. JumpRequest срабатывает и от кнопки прыжка на телефоне.

Скрипты

DoubleJump

Где: 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) и убедись:

Собрать двойной прыжок одной командой