使用動畫

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

一旦你創建了一個動畫,你需要使用腳本將其包含在你的遊戲中。你可以從腳本手動播放動畫替換玩家角色的預設動畫

從腳本播放動畫

在某些情況下,你需要從腳本內部直接播放動畫,例如當用戶按下某個按鍵或撿起特殊物品時。

人形

要在包含 Humanoid 對象的模型上播放動畫(例如典型的可玩角色),遵循以下基本模式:

  1. 確保本地玩家的 Humanoid 包含 Animator 對象。
  2. 創建一個新的 Animation 實例,並指定正確的 AnimationId
  3. 通過 Animator:LoadAnimation() 加載動畫,以便創建 AnimationTrack
  4. 使用 AnimationTrack:Play() 播放該軌道。

例如,以下 LocalScript,當放置在 StarterPlayerScripts 中時,會將 "踢" 動畫加載到玩家角色上並播放。該腳本還利用 GetMarkerReachedSignal() 方法來檢測何時發生特定的動畫事件

LocalScript - 在玩家角色上播放自定義動畫

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
-- 確保角色的人形包含 "Animator" 對象
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
-- 創建一個新的 "Animation" 實例並指定動畫資源 ID
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- 將動畫加載到動畫器中
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- 如果為動畫定義了命名事件,則將其連接到 "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- 播放動畫軌道
kickAnimationTrack:Play()

非人形

要在包含 Humanoid 的模型上播放動畫,你必須創建一個 AnimationController,並添加一個 Animator。例如,以下 Script(假設為模型的直接子項)會加載 "踢" 動畫並播放它。

Script - 在角色模型上播放自定義動畫

local rig = script.Parent
-- 創建一個新的 "Animation" 實例並指定動畫資源 ID
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- 創建一個新的 "AnimationController" 和 "Animator"
local animationController = Instance.new("AnimationController")
animationController.Parent = rig
local animator = Instance.new("Animator")
animator.Parent = animationController
-- 將動畫加載到動畫器中
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- 如果為動畫定義了命名事件,則將其連接到 "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- 播放動畫軌道
kickAnimationTrack:Play()

替換預設動畫

預設情況下,Roblox 玩家角色包括許多常見動畫,如跑步、攀爬、游泳和跳躍。你可以將這些預設動畫替換為目錄中的動畫或你自己的自定義動畫。

  1. 獲取新動畫的 資產 ID,方法如下:

  2. 資源管理器窗口中,向 ServerScriptService 添加一個新的 Script

    1. 將鼠標懸停在 ServerScriptService 上,然後單擊 ⊕ 按鈕。
    2. 從上下文菜單中插入 Script
  3. 在新腳本中,粘貼以下代碼:

    Script - 替換角色預設動畫

    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    -- 獲取人形上的動畫器
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    -- 停止所有動畫軌道
    for _, playingTrack in animator:GetPlayingAnimationTracks() do
    playingTrack:Stop(0)
    end
    local animateScript = character:WaitForChild("Animate")
    --animateScript.run.RunAnim.AnimationId = "rbxassetid://"
    --animateScript.walk.WalkAnim.AnimationId = "rbxassetid://"
    --animateScript.jump.JumpAnim.AnimationId = "rbxassetid://"
    --animateScript.idle.Animation1.AnimationId = "rbxassetid://"
    --animateScript.idle.Animation2.AnimationId = "rbxassetid://"
    --animateScript.fall.FallAnim.AnimationId = "rbxassetid://"
    --animateScript.swim.Swim.AnimationId = "rbxassetid://"
    --animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"
    --animateScript.climb.ClimbAnim.AnimationId = "rbxassetid://"
    end
    local function onPlayerAdded(player)
    player.CharacterAppearanceLoaded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  4. 對於每一行引用預設角色動畫的代碼,取消註解並在 rbxassetid:// 之後粘貼替換 ID。例如,將預設跑步動畫更改為忍者跑變體:

    Script - 替換角色預設動畫

    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    -- 獲取人形上的動畫器
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    -- 停止所有動畫軌道
    for _, playingTrack in animator:GetPlayingAnimationTracks() do
    playingTrack:Stop(0)
    end
    local animateScript = character:WaitForChild("Animate")
    animateScript.run.RunAnim.AnimationId = "rbxassetid://656118852"
    --animateScript.walk.WalkAnim.AnimationId = "rbxassetid://"
    --animateScript.jump.JumpAnim.AnimationId = "rbxassetid://"
    --animateScript.idle.Animation1.AnimationId = "rbxassetid://"
    --animateScript.idle.Animation2.AnimationId = "rbxassetid://"
    --animateScript.fall.FallAnim.AnimationId = "rbxassetid://"
    --animateScript.swim.Swim.AnimationId = "rbxassetid://"
    --animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"
    --animateScript.climb.ClimbAnim.AnimationId = "rbxassetid://"
    end
    local function onPlayerAdded(player)
    player.CharacterAppearanceLoaded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)

設定動畫權重

你可以為相同的動作使用多個動畫。例如,在替換預設動畫的代碼示例中,有兩種 idle 變體。

當角色狀態存在多個動畫時,Animate 腳本會隨機選擇要播放的動畫,但你可以通過設定動畫的 Weight 值來影響選擇的結果,公式如下:

  • 動畫權重 / 所有狀態動畫的總權重

在以下示例中,idle.Animation1 在角色靜止時會 ⅓ 的時間播放,而 idle.Animation2 會 ⅔ 的時間播放。

Script - 替換角色預設動畫

animateScript.idle.Animation1.AnimationId = "rbxassetid://656117400"
animateScript.idle.Animation2.AnimationId = "rbxassetid://656118341"
animateScript.idle.Animation1.Weight.Value = 5
animateScript.idle.Animation2.Weight.Value = 10

動畫參考

預設角色動畫

以下表格包含所有可以替換目錄動畫或你自己的自定義動畫的預設角色動畫。請注意,Idle 有兩個變體,你可以根據需要調整權重以改變播放頻率。

角色動作Animate 腳本參考
跑步animateScript.run.RunAnim.AnimationId
走路animateScript.walk.WalkAnim.AnimationId
跳躍animateScript.jump.JumpAnim.AnimationId
靜止

animateScript.idle.Animation1.AnimationId
animateScript.idle.Animation2.AnimationId

墜落animateScript.fall.FallAnim.AnimationId
游泳

animateScript.swim.Swim.AnimationId

游泳(靜止)

animateScript.swimidle.SwimIdle.AnimationId

攀爬animateScript.climb.ClimbAnim.AnimationId

目錄動畫

當使用角色動畫包來替換預設動畫時,請使用以下參考對應的資產 ID。例如,如果你想應用忍者跳躍動畫,使用 656117878。請注意,Idle 有多個變體。

宇航員
跑步
891636393
走路
891636393
跳躍
891627522
靜止
891621366, 891633237, 1047759695
墜落
891617961
游泳
891639666
游泳(靜止)
891663592
攀爬
891609353
泡泡
跑步
910025107
走路
910034870
跳躍
910016857
靜止
910004836, 910009958, 1018536639
墜落
910001910
游泳
910028158
游泳(靜止)
910030921
攀爬
909997997
卡通風格
跑步
742638842
走路
742640026
跳躍
742637942
靜止
742637544, 742638445, 885477856
墜落
742637151
游泳
742639220
游泳(靜止)
742639812
攀爬
742636889
長者
跑步
845386501
走路
845403856
跳躍
845398858
靜止
845397899, 845400520, 901160519
墜落
845396048
游泳
845401742
游泳(靜止)
845403127
攀爬
845392038
騎士
跑步
657564596
走路
657552124
跳躍
658409194
靜止
657595757, 657568135, 885499184
墜落
657600338
游泳
657560551
游泳(靜止)
657557095
攀爬
658360781
懸浮
跑步
616010382
走路
616013216
跳躍
616008936
靜止
616006778, 616008087, 886862142
墜落
616005863
游泳
616011509
游泳(靜止)
616012453
攀爬
616003713
法師
跑步
707861613
走路
707897309
跳躍
707853694
靜止
707742142, 707855907, 885508740
墜落
707829716
游泳
707876443
游泳(靜止)
707894699
攀爬
707826056
忍者
跑步
656118852
走路
656121766
跳躍
656117878
靜止
656117400, 656118341, 886742569
墜落
656115606
游泳
656119721
游泳(靜止)
656121397
攀爬
656114359
海盜
跑步
750783738
走路
750785693
跳躍
750782230
靜止
750781874, 750782770, 885515365
墜落
750780242
游泳
750784579
游泳(靜止)
750785176
攀爬
750779899
機器人
跑步
616091570
走路
616095330
跳躍
616090535
靜止
616088211, 616089559, 885531463
墜落
616087089
游泳
616092998
游泳(靜止)
616094091
攀爬
616086039
Rthro
跑步
2510198475
走路
2510202577
跳躍
2510197830
靜止
2510197257, 2510196951, 3711062489
墜落
2510195892
游泳
2510199791
游泳(靜止)
2510201162
攀爬
2510192778
時尚
跑步
616140816
走路
616146177
跳躍
616139451
靜止
616136790, 616138447, 886888594
墜落
616134815
游泳
616143378
游泳(靜止)
616144772
攀爬
616133594
超級英雄
跑步
616117076
走路
616122287
跳躍
616115533
靜止
616111295, 616113536, 885535855
墜落
616108001
游泳
616119360
游泳(靜止)
616120861
攀爬
616104706
玩具
跑步
782842708
走路
782843345
跳躍
782847020
靜止
782841498, 782845736, 980952228
墜落
782846423
游泳
782844582
游泳(靜止)
782845186
攀爬
782843869
吸血鬼
跑步
1083462077
走路
1083473930
跳躍
1083455352
靜止
1083445855, 1083450166, 1088037547
墜落
1083443587
游泳
1083464683
游泳(靜止)
1083467779
攀爬
1083439238
狼人
跑步
1083216690
走路
1083178339
跳躍
1083218792
靜止
1083195517, 1083214717, 1099492820
墜落
1083189019
游泳
1083222527
游泳(靜止)
1083225406
攀爬
1083182000
僵屍
跑步
616163682
走路
616168032
跳躍
616161997
靜止
616158929, 616160636, 885545458
墜落
616157476
游泳
616165109
游泳(靜止)
616166655
攀爬
616156119
©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。