Roblox · Анимации

Своя анимация бега

Персонаж бегает и ходит твоей анимацией вместо стандартной. Скрипт на сервере подменяет её у каждого персонажа — и после каждого возрождения.

Структура

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

ServerScriptService
└─ RunAnimation (Script)
Workspace
└─ Игрок → Animate (LocalScript) — стандартный, появляется в персонаже сам
   ├─ run (StringValue)
   │  └─ RunAnim (Animation) — AnimationId меняет скрипт
   └─ walk (StringValue)
      └─ WalkAnim (Animation)

Шаги

  1. Сделать анимацию: Avatar → Rig Builder → R15 (или R6 — как у персонажей в игре: Game Settings → Avatar). Выдели риг → Avatar → Animation Editor → имя анимации → Create.
  2. Бег — цикл: первый и последний кадры одинаковые, иначе на стыке будет рывок. Два шага — около 0,7–0,8 секунды.
  3. Справа вверху включи Loop (зацикливание), «⋯» → Set Animation Priority → Movement.
  4. Готово — «⋯» → Publish to Roblox → Submit → скопируй ID. Публикуй с того же аккаунта (или группы), что и игру: чужая анимация в твоей игре не проиграется.
  5. Готовую анимацию можно взять и из каталога Roblox (Marketplace → Animations): анимации от Roblox работают в любой игре.
  6. ServerScriptService → «+» → Script «RunAnimation», в первые строки впиши ID: RUN_ID — бег, WALK_ID — ходьба (если отдельной ходьбы нет, впиши тот же ID).
  7. Как работает: в каждом персонаже есть стандартный скрипт Animate, а в нём папки run, walk, idle, jump… с анимациями. Скрипт меняет AnimationId у run и walk — Animate сам замечает это и включает новую.
  8. Так же меняются и другие: idle (стойка), jump (прыжок), fall (падение), climb (лазание) — добавь SetAnimation(animate, "idle", ID) с нужным именем.

Скрипты

RunAnimation

Где: ServerScriptService · Script
Зачем: Подменяет анимации бега и ходьбы у каждого персонажа.

-- ID твоей анимации бега — вставь вместо 0
local RUN_ID = "rbxassetid://0"
-- ID ходьбы (медленный шаг); можно тот же, что у бега
local WALK_ID = "rbxassetid://0"

-- заменить одну анимацию в Animate
local function SetAnimation(animate, name, id)
    -- папка run или walk внутри Animate
    local folder = animate:WaitForChild(name, 5)
    -- такой нет — пропускаем
    if not folder then return end
    -- сама анимация внутри папки
    local anim = folder:FindFirstChildOfClass("Animation")
    -- анимация есть и ID вписан
    if anim and id ~= "rbxassetid://0" then
        -- меняем — Animate сразу начнёт играть новую
        anim.AnimationId = id
    -- конец проверки
    end
-- конец функции
end

-- игрок зашёл
game.Players.PlayerAdded:Connect(function(player)
    -- появился персонаж — и после каждой смерти
    player.CharacterAdded:Connect(function(character)
        -- стандартный скрипт анимаций персонажа
        local animate = character:WaitForChild("Animate")
        -- бег
        SetAnimation(animate, "run", RUN_ID)
        -- ходьба
        SetAnimation(animate, "walk", WALK_ID)
    -- конец обработчика
    end)
-- конец обработчика
end)

Проверка

Запусти Play (или Run) и убедись: