Анимации и твины в Roblox Studio

Анимация в Roblox бывает двух видов: движение персонажа по костям и плавное изменение свойств объекта. Первое делают в Animation Editor, второе — кодом.

Animation Editor: персонажи

  • Редактор открывается из вкладки Avatar и работает с моделью, у которой есть Humanoid
  • Движение собирается из ключевых кадров на дорожке времени
  • Готовая анимация загружается в Roblox и получает свой идентификатор
  • В игре её проигрывает Animator внутри Humanoid

Как проиграть анимацию

StarterPlayerScripts/Wave.client.lua
  1. local Players = game:GetService("Players")
  2.  
  3. local player = Players.LocalPlayer
  4. local character = player.Character or player.CharacterAdded:Wait()
  5. local humanoid = character:WaitForChild("Humanoid")
  6. local animator = humanoid:WaitForChild("Animator")
  7.  
  8. local wave = Instance.new("Animation")
  9. wave.AnimationId = "rbxassetid://0" -- сюда свой идентификатор
  10.  
  11. local track = animator:LoadAnimation(wave)
  12. track.Priority = Enum.AnimationPriority.Action
  13. track:Play()

Идентификатор нулевой намеренно: подставь свой — чужие анимации так не берут.

TweenService: объекты и интерфейс

Всё, что не персонаж, анимируют твинами: дверь, панель интерфейса, прозрачность, цвет. Твин сам считает промежуточные значения, поэтому не нужен цикл, который дёргает свойство каждый кадр.

Твин на клиенте видит только клиент, твин на сервере — все. Для интерфейса это плюс: анимация панели никого, кроме владельца экрана, не касается.

Чего лучше не делать

  • Не двигай объект в цикле while — получится рывками и сожрёт производительность
  • Не проигрывай персонажу анимации, прав на которые у тебя нет
  • Не забывай останавливать трек: незавершённые анимации накладываются друг на друга