Скрипт: проигрывание анимации персонажа
Скрипт проигрывает анимацию персонажа по нажатию клавиши. Работает он на клиенте: анимация — это показ, и её видят все игроки, потому что движок реплицирует анимации сам.
Куда положить
StarterPlayer → StarterPlayerScripts, тип объекта LocalScript
Что должно быть в проекте
- Своя анимация, созданная в Animation Editor и загруженная в Roblox
- Её идентификатор, подставленный вместо нуля в коде
Код
local Players = game:GetService("Players")local UserInputService = game:GetService("UserInputService")local ANIMATION_ID = "rbxassetid://0" -- свой идентификаторlocal player = Players.LocalPlayerlocal tracklocal function prepare(character)local humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")local animation = Instance.new("Animation")animation.AnimationId = ANIMATION_IDtrack = animator:LoadAnimation(animation)track.Priority = Enum.AnimationPriority.Actionendif player.Character thenprepare(player.Character)endplayer.CharacterAdded:Connect(prepare)UserInputService.InputBegan:Connect(function(input, processed)if processed or input.KeyCode ~= Enum.KeyCode.E thenreturnendif not track thenreturnendif track.IsPlaying thentrack:Stop()elsetrack:Play()endend)
Аргумент processed отсекает нажатия, которые уже забрал интерфейс: иначе анимация запустится во время набора текста в чате.
На что обратить внимание
- Анимацию нужно создать самому: чужие идентификаторы не сработают и брать их нельзя
- Приоритет Action перекрывает ходьбу; для замены базовых движений есть отдельные приоритеты
- Трек перезагружается при каждом респауне — за это отвечает CharacterAdded