Animator

顯示已棄用項目

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

負責播放和複製 Animations 的主要類別。所有複製播放 AnimationTracks 的處理都是通過 Animator 實個體、實例來處理。

也參閱 動畫編輯器使用動畫 來學習如何在遊戲中創建和添加預製或自訂動畫。

概要

屬性

方法

活動

屬性

EvaluationThrottled

唯讀
未複製
無法瀏覽
平行寫入

PreferLodEnabled

平行讀取

RootMotion

唯讀
未複製
無法瀏覽
平行寫入

RootMotionWeight

唯讀
未複製
無法瀏覽
平行寫入

方法

ApplyJointVelocities

void

考慮到現有的 AnimationTracks 播放,以及其當前的時間和播放速度,計算相對速度在零件之間,並將它們應用到Motor6D.Part1 (子部分)。這些相對速度計算和分配在指定的順序中發生。

此方法不適用於指定的關節,如果兩個關組合的零件目前是相同的裝配,例如,如果它們仍然是由電機或焊接直接或間接地連接。

此方法不會為您停用或移除關節。您必須先停用或其他方式移除裝配件的靈活關節才能召喚此方法。

Motor6Ds 不需要成為 DataModel 的後代。移除 DataModel 的關節前,才能支持此方法。

參數

motors: Variant

返回

void

GetPlayingAnimationTracks

返回目前正在播放的 AnimationTracks 清單。


返回

LoadAnimation

此功能將指定的 Animation 載入此 Animator 上,並且返回可播放的 AnimationTrack。當客戶端在模型中呼叫 2>Class.Animator2> 時,此功能也會載入此 5>Class.BasePart:SetNetworkOwner5> 上的動

您應該使用這個功能,而不是類似名稱的 Humanoid:LoadAnimation()AnimationController:LoadAnimation() 功能。這些是此功能的過時代理,也會創建一個 Animator 如果沒有人存在;這可能會導致複製問題。如果您不小心,這可能會導致重複問題。

在客戶機或伺服器上載入動畫

為了正確重複 AnimationTracks,重要是要知道它們應該在客戶端或伺服器上載入時間:

  • 如果 AnimatorHumanoidAnimationController 的後代,在玩家的 2>Class.Player.Character2> 中,客戶端的動畫將會在服務器和其他客戶端上重複到服務器。

  • 如果 Animator 是玩家角色的後代,其動畫必須在服務器上載入並啟動才能複製。

Class.Animator 對象必須先在服務器上創建,然後才能對客戶端進行動畫重複,才能正常運行。如果 Animator 是在本地創建的,那麼載入該 AnimationTracks 的話,就不會重複。

參數

animation: Animation

將要使用的 Animation


返回

RegisterEvaluationParallelCallback

void

參數

callback: function

返回

void

StepAnimations

void
外掛程式安全性

增加 AnimationTrack.TimePosition 的所有載入到 AnimationTracks 的玩家,並且將其中的偏移量應用到模型上的 Animator 。僅限於指令條或由插件載入。

DeltaTime 參數決定要在動畫的進度上增加的秒數。通常此功能會在預覽動畫長度時呼叫為一個循環來預覽動畫的長度 (請參閱範例)。

注意,動畫停止播放後,模型的關節將需要手動重設為原始位置 (請參閱範例)。

此功能用於模擬游戲不在執行時播放 Animations 時的預覽。這允許動畫在執行遊戲時無需擔心的情況下預覽動畫,例如執行指令碼。如果在遊戲執行時或由 Scripts

開發自訂動畫編輯器的開發者建議使用此功能來預覽動畫,因為它是 Roblox 官方動畫編輯器 插件的方法。

參數

deltaTime: number

秒鐘動畫播放的時間量將會增加。


返回

void

範例程式碼

Preview Animation in Studio

local RunService = game:GetService("RunService")
local function studioPreviewAnimation(model, animation)
-- find the AnimationController and Animator
local animationController = model:FindFirstChildOfClass("Humanoid")
or model:FindFirstChildOfClass("AnimationController")
local animator = animationController and animationController:FindFirstChildOfClass("Animator")
if not animationController or not animator then
return
end
-- load the Animation to create an AnimationTrack
local track = animationController:LoadAnimation(animation)
track:Play()
-- preview the animation
local startTime = tick()
while (tick() - startTime) < track.Length do
local step = RunService.Heartbeat:wait()
animator:StepAnimations(step)
end
-- stop the animation
track:Stop(0)
animator:StepAnimations(0)
-- reset the joints
for _, descendant in pairs(model:GetDescendants()) do
if descendant:IsA("Motor6D") then
local joint = descendant
joint.CurrentAngle = 0
joint.Transform = CFrame.new()
end
end
end
local character = script.Parent
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765644"
studioPreviewAnimation(character, animation)

活動

AnimationPlayed

發射所有 AnimationTrack:Play() 呼叫的動畫軌跡。

參數

animationTrack: AnimationTrack