一旦您創建了動畫,您需要使用腳本將它們包含在體驗中。您可以手動從腳本中 播放動畫 或 替換預設動畫 給玩家角色。
從腳本中播放動畫
在某些情況下,您需要直接從腳指令碼內播放動畫,例如當使用者按下特定鍵或撿起特殊物道具時。
人形怪物
要在包含 Humanoid 物件象的裝備上播放動畫,例如典型可玩角色,請遵循此基本模式:
- 使用正確的 創建一個新實例。
- 透過 Animator:LoadAnimation() 載入動畫以創建 AnimationTrack 。
- 使用 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 玩家角色包括奔跑、攀爬、游泳和跳躍等常見動畫。您可以用 預設動畫 取代這些動畫,或用 目錄 的動畫或自己的 自訂 動畫。
在新的腳指令碼中,貼上以下代碼:
腳本 - 替換預設角色動畫local Players = game:GetService("Players")local function onCharacterAdded(character)-- 在人形上獲得動畫師local humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- 停止所有動畫軌道for _, playingTrack in animator:GetPlayingAnimationTracks() doplayingTrack:Stop(0)endlocal 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://"endlocal function onPlayerAdded(player)player.CharacterAppearanceLoaded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)對於每一行參考 預設角色動畫 的情況,請取消評論,然後在 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() doplayingTrack:Stop(0)endlocal 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://"endlocal function onPlayerAdded(player)player.CharacterAppearanceLoaded:Connect(onCharacterAdded)endPlayers.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 = 5animateScript.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 |