ゲーム内でアニメーションを実装するには、スクリプトを使用します。このチュートリアルでは、先ほど作成したジャンプパフォーマンスのアニメーションを、既成のスクリプトを使って実装します。このアニメーションは、オービーの最後に到達したときや、宝箱を見つけたときなど、プレイヤーの達成を祝うために使用することができます。
スクリプト アニメーション
アニメーションは、スクリプトを使用して起動されます。例えば、プレイヤーがレベルをクリアしたとき、敵を倒したとき、あるいはゲーム内で購入したときなど、さまざまな状況でアニメーションを再生するためにイベントを使用する方法があります。
プロジェクトを設定する
このプロジェクトでは、タッチするとそのプレイヤーのアニメーションが再生するパーツを作成します。
- アニメーションを再生する全てのパーツを整理するために、Workspace に TouchPartFolder というフォルダを追加します。
- TouchPartFolder にパーツを追加します。
例えば、レベルの最後やプレイヤーが収集するオブジェクトの近くなど、アニメーションを再生するのに適した場所にパーツを配置するようにしてください。
- StarterPlayer > StarterCharacterScriptsで、TouchPartRegister という名前の LocalScript を作成します。そして、以下のコードをコピー&ペーストしてください。
-- PlayerAnimationFeedback "スクリプトと併用し、パーツタッチ時にアニメーションを再生する
-- Services
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.Character:Wait()
local humanoid = character:WaitForChild("Humanoid")
local canTouch = false
-- フィードバックアニメーションのモジュールスクリプトのロード
local PlayerAnimationFeedback = require(ReplicatedStorage:WaitForChild("PlayerAnimationFeedback"))
-- Function called when a part is touched
local function onPartTouch(otherPart)
if humanoid and canTouch == false then
canTouch = true
PlayerAnimationFeedback:PlayAnimation()
canTouch = false
end
end
-- 起動時に、アニメーションモジュールのロード関数を呼び出す
PlayerAnimationFeedback:LoadAnimation(humanoid)
-- touchPartFolder内の全パーツにタッチイベントを接続する
local touchPartFolder = workspace:WaitForChild("TouchPartFolder")
local touchParts = touchPartFolder:GetChildren()
for objectIndex = 1, #touchParts do
local touchPart = touchParts[objectIndex]
touchPart.Touched:Connect(onPartTouch)
end
このスクリプトは TouchPartFolder にあるすべてのパーツを見つけ、それらに Touched() イベントを与えます。イベントが発生すると、プレーヤーに対してアニメーションを再生する関数が実行されます。
このスクリプトではTouched()を使用していますが、MouseClick()やChanged()などの別のイベントを使用することも可能です。さらに、プレイヤーにポイントを与えるなど、独自のゲーム イベントを TouchPartRegister スクリプトから実行することができます。
- 次のスクリプトは、プレーヤーのアニメーションをトリガーします。ReplicatedStorage に、PlayerAnimationFeedback という名前の新しい ModuleScript を作成します。そして、以下のコードをコピー&ペーストしてください。
-- TouchPartRegister スクリプトと併用し、プレイヤーにアニメーションを再生する
local PlayerAnimationFeedback = {}
local feedbackAnimationTrack
local ANIMATION_FADE = 0.3
local ANIMATION_ID = "rbxassetid://YOUR_ANIMATION"
-- プレイヤーのキャラクターにアニメーションを読み込む関数
function PlayerAnimationFeedback:LoadAnimation(humanoid)
local feedbackAnimation = Instance.new("Animation")
feedbackAnimation.AnimationId = ANIMATION_ID
feedbackAnimationTrack = humanoid:LoadAnimation(feedbackAnimation)
feedbackAnimationTrack.Priority = Enum.AnimationPriority.Action
feedbackAnimationTrack.Looped = false
end
-- アニメーションを再生する関数
function PlayerAnimationFeedback:PlayAnimation()
feedbackAnimationTrack:Play(ANIMATION_FADE)
wait(feedbackAnimationTrack.Length)
end
return PlayerAnimationFeedback
アニメーションの再生
アニメーションは、スクリプトで識別し、ロードして再生する必要があります。
アニメーションの設定
スクリプトは、どのアニメーションを再生するかを知る必要があります。エクスポートされたアニメーションを使用するには、Web ブラウザでそのアセット ID を探します。そのIDによって、そのアニメーションをスクリプトに読み込むことができます。
- 作成ページのアニメーションセクションを開きます。
- エクスポートされたアニメーションを見つけてクリックします。
- ブラウザの URL からその ID をコピーします。
- スクリプト「PlayerAnimationFeedback」のプレースホルダー「YOUR_ANIMATION」をコピーしたIDに置き換えます。
- プロジェクトを実行し、プレーヤーがパーツに当たるとアニメーションが再生されることを確認してください。
[ 作って遊ぼう ]