NPCをアニメーション再生する方法です。
NPCはツールボックスから見つけても良いのですがここでは自身のキャラクターをNPCとして使用しようと思います。
NPCの作成
- Baseplateのみのテンプレートを使って新規作成します。
- プレイします。
- Workspaceに自身のキャラクターモデルが入っていると思いますので、それを右クリックしてコピーします。
- 停止します。
- Workspcaeにペーストします。これで自身のキャラクターモデルが取得できます。
- キャラクターモデルの名称を「NPC」に変更します。
NPCにダンスをさせる
パーツをクリックしたら、NPCにダンスをさせてみます。
- パーツを1つ追加します。
- その中に、ClickDetector と Script を追加します。
- Scriptを開き、以下のプログラムを入力します。
local part = script.Parent
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507771019"
local animationTrack = workspace.NPC.Humanoid:LoadAnimation(animation)
part.ClickDetector.MouseClick:Connect(function(player)
animationTrack:Play() -- アニメーションの再生
wait(5)
animationTrack:Stop() -- アニメーションの停止
end)
他のアニメーションを再生する
「animation.AnimationId = “rbxassetid://507771019″」でダンスのアニメーションを設定しています。この数字を変更することで、他のアニメーションも再生できます。
NPCを展開し、Animate の中の dance のさらに Animation1というところをクリックしてください。その中にある AnimationId プロパティに「http://www.roblox.com/asset/?id=507771019」と設定されていると思います。数字の部分がアニメーションIDになります。
例えば、jump の JumpAnim の AnimationId は「http://www.roblox.com/asset/?id=507765000」になっていますので、507765000 を指定すればジャンプするという訳です。
NPCに含まれるAnimationを使用した使用
上記の方法で作成したNPCには、Animate 下に Animation オブジェクトが存在しています。つまり、これをそのまま利用してもアニメーションの再生は可能です。
local part = script.Parent
local npc = game.Workspace.NPC
local animation = npc.Animate.dance.Animation1 -- Animation オブジェクトの取得
local animationTrack = npc.Humanoid:LoadAnimation(animation)
part.ClickDetector.MouseClick:Connect(function(player)
animationTrack:Play() -- アニメーションの再生
wait(5)
animationTrack:Stop() -- アニメーションの停止
end)
Humanoid の LoadAnimation は非推奨らしい
Roblox公式を確認すると、Humanoid:LoadAnimation は非推奨になっているようです。という訳でこれを使用しない方法も書いておきます。代替えは、Animator オブジェクトにある LoadAnimation を使用することになります。Animator はHumanoidの中にありますので確認してみましょう。
local part = script.Parent
local npc = workspace.NPC
local animator = npc.Humanoid.Animator
local animation = npc.Animate.dance.Animation1
local animationTrack = animator:LoadAnimation(animation)
part.ClickDetector.MouseClick:Connect(function(player)
animationTrack:Play() -- アニメーションの再生
wait(5)
animationTrack:Stop() -- アニメーションの停止
end)