使用動畫

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

一旦您創建了動畫,您需要使用腳本將它們包含在體驗中。您可以手動從腳本中 播放動畫替換預設動畫 給玩家角色。

從腳本中播放動畫

在某些情況下,您需要直接從腳指令碼內播放動畫,例如當使用者按下特定鍵或撿起特殊物道具時。

人形怪物

要在包含 Humanoid 物件象的裝備上播放動畫,例如典型可玩角色,請遵循此基本模式:

  1. 確保本地玩家的 Humanoid 包含 Animator 對物件。
  2. 使用正確的 創建一個新實例。
  3. 透過 Animator:LoadAnimation() 載入動畫以創建 AnimationTrack
  4. 使用 AnimationTrack:Play() 播放軌道。

例如,下列 LocalScript ,當放置在 StarterPlayerScripts 中時,會將"踢出"動畫載入玩家的角色並播放。腳本也使用 GetMarkerReachedSignal() 方法來偵測特定 動畫事件 發生時間。

本地腳本 - 在玩家角色上播放自訂動畫

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
-- 確保角色的人形包含「動畫師」對物件
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
-- 創建新的「動畫」實例並分配動畫資產ID
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- 將動畫載入到動畫師
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- 播放動畫軌道
kickAnimationTrack:Play()
-- 如果動畫定義了命名事件,連接到「GetMarkerReachedSignal()」
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)

非人形體

若要在不包含 的裝備上播放動畫,您必須使用兒子 創建一個 。例如,下列 Script (假設是骨架的直接兒女) 載入一個「踢出」動畫並播放。

腳本 - 在角色骨架上播放自訂動畫

local rig = script.Parent
-- 創建新的「動畫」實例並分配動畫資產ID
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- 創建新的「動畫控制器」和「動畫師」
local animationController = Instance.new("AnimationController")
animationController.Parent = rig
local animator = Instance.new("Animator")
animator.Parent = animationController
-- 將動畫載入到動畫師
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- 播放動畫軌道
kickAnimationTrack:Play()
-- 如果動畫定義了命名事件,連接到「GetMarkerReachedSignal()」
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)

替換預設動畫

預設情況下,Roblox 玩家角色包括奔跑、攀爬、游泳和跳躍等常見動畫。您可以用 預設動畫 取代這些動畫,或用 目錄 的動畫或自己的 自訂 動畫。

  1. 獲得新動畫的 資產ID 如下:

  2. 導航器 窗口中,添加新的 ScriptServerScriptService

    1. 將鼠標懸停在 伺服器腳本服務 上,然後單擊⊕按鈕。
    2. 從上下文選單中插入 腳本
  3. 在新的腳指令碼中,貼上以下代碼:

    腳本 - 替換預設角色動畫

    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.執行unAnim.AnimationId = "rbxassetid://"
    --動畫腳本.步行路.走路動畫.動畫ID = "rbxassetid://"
    --跳躍腳本。跳躍Anim。動畫ID = "rbxassetid://"
    --animateScript.閒置dle.Animation1.AnimationId = "rbxassetid://"
    --animateScript.閒置dle.Animation2.AnimationId = "rbxassetid://"
    --動畫腳本。跌落all.FallAnim.AnimationId = "rbxassetid://"
    --animateScript.游泳im.Swim.AnimationId = "rbxassetid://"
    --animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"
    --animateScript.climb.攀爬limbAnim.AnimationId = "rbxassetid://"
    end
    local function onPlayerAdded(player)
    player.CharacterAppearanceLoaded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  4. 對於每一行參考 預設角色動畫 的情況,請取消評論,然後在 rbxassetid:// 之後貼上替換 ID。例如,要將預設奔跑動畫變更為 忍者奔跑 變體:

    腳本 - 替換預設角色動畫

    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"
    --動畫腳本.步行路.走路動畫.動畫ID = "rbxassetid://"
    --跳躍腳本。跳躍Anim。動畫ID = "rbxassetid://"
    --animateScript.閒置dle.Animation1.AnimationId = "rbxassetid://"
    --animateScript.閒置dle.Animation2.AnimationId = "rbxassetid://"
    --動畫腳本。跌落all.FallAnim.AnimationId = "rbxassetid://"
    --animateScript.游泳im.Swim.AnimationId = "rbxassetid://"
    --animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"
    --animateScript.climb.攀爬limbAnim.AnimationId = "rbxassetid://"
    end
    local function onPlayerAdded(player)
    player.CharacterAppearanceLoaded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)

設定動畫重量

您可以使用多個動畫來執行相同的動作。例如,代碼樣本中有兩種 變化來替換預設動畫。

當角色狀態存在多個動畫時, 動畫 腳本隨機選擇要玩 遊玩放的哪一個動畫,但您可以通過設置動畫的Weight在下列方式中影響結果:

  • 動畫重量 / 所有狀態動畫總重量 在下面的例子中,idle.Animation1將在角色閒置的時間的一半播放,而idle.Animation2將在一半的時間播放。
腳本 - 替換預設角色動畫

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

動畫參考

預設角色動畫

下表包含所有你可以用 目錄 動畫或自己的 自訂 動畫來替換的預設角色動畫。請注意, 空閒 有兩種變化,你可以重量來玩更多或更少頻率。

角色行動作動畫腳本參考
執行 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。請注意, 空置 有多種變化。

宇航員
奔跑 891636393
走路 891636393
跳躍 891627522
閒置 891621366, 891633237, 1047759695
閒置 (Idle) 891617966, 891633237, 1047759695
游泳 891639666
游泳 (閒置) 891663592
泡泡
奔跑 910025107
走路 910034870
跳躍 910016857
閒置 910004836, 910009958, 1018536639
游泳 910001910
閒置 (Idle) 910030921
游泳 (閒置) 910028158
卡通
執行 742638842
走路 742640026
跳躍 742637942
閒置 742637544, 742638445, 885477856
閒置 (Idle) 742637151
游泳 742639220
游泳 (閒置) 742639812
長老
奔跑 845386501
走路 845403856
跳躍 845398858
閒置 845397899, 845400520, 901160519
閒置 (Idle) 845396048
游泳 845401742
游泳 (閒置) 845392038
騎士
奔跑 657564596
走路 657552124
跳躍 658409194
閒置 657595757, 657568135, 885499184
潛水 657600338, 657568135, 885499184
游泳 657560551
游泳 (閒置) 657557095
漂浮
執行 616010382
走路 616013216
跳躍 616008936
閒置 616006778, 616008087, 886862142
閒置 (Idle) 616005863
游泳 616011509
游泳 (閒置) 616003713
魔法師
執行 707861613
走路 707897309
跳躍 707853694
閒置 707742142, 707855907, 885508740
閒置 (Idle) 707829716
游泳 707876443
游泳 (閒置) 707894699
忍者
執行 656118852
走路 656121766
跳躍 656117878
閒置 656117400, 656118341, 886742569
閒置 (Idle) 656115606, 656118341, 886742569
游泳 656119721
游泳 (閒置) 656121397
海盜
執行 750783738
走路 750785693
跳躍 750782230
閒置 750781874, 750782770, 885515365
閒置 (Idle) 750780242, 750782770, 885515365
游泳 750784579
游泳 (閒置) 750785176
機器人
執行 616091570
走路 616095330
跳躍 616088211, 616089559, 885531463
閒置 616088211, 616089559, 885531463
跳躍 (閒置) 616087089
游泳 616092998
游泳 (閒置) 616086039
Rthro
奔跑 2510198475
走路 2510202577
跳躍 2510197830
閒置 2510197257, 2510196951, 3711062489
閒置 (閒置) 2510195892
游泳 2510201162
游泳 (閒置) 2510192778
時尚
執行 616140816
走路 616146177
跳躍 616139451
閒置 616136790, 616138447, 886888594
閒置 (Idle) 616134815
游泳 616143378
游泳 (閒置) 616144772
超級英雄
執行 616117076
走路 616122287
跳躍 616115533
閒置 616111295, 616113536, 885535855
閒置 (Idle) 616108001, 616113536, 885535855
游泳 616119360
游泳 (閒置) 616120861
玩具
奔跑 782842708
走路 782843345
跳躍 782847020
閒置 782841498, 782845736, 980952228
游泳 782846423
潛水 (閒置) 782845186
游泳 (閒置) 782843869
吸血鬼
奔跑 1083462077
走路 1083473930
跳躍 1083455352
閒置 1083445855, 1083450166, 1088037547
待機 1083443587
游泳 1083464683
游泳 (閒置) 1083467779
狼人
奔跑 1083216690
走路 1083178339
跳躍 1083218792
閒置 1083195517, 1083214717, 1099492820
閒置 (Idle) 1083222527
游泳 1083225406
游泳 (閒置) 1083182000
殭屍
奔跑 616163682
走路 616168032
跳躍 616161997
閒置 616158929, 616160636, 885545458
潛水 616157476
游泳 (閒置) 616166655
游泳 (閒置) 616156119