1. イベントトリガーの実装方法
本記事では、AnimationEditorを使用して、アバターのアニメーションを作成する方法と、Animation Eventsの設定方法を詳しく解説します。具体的な手順とコードの実装を通じて、アニメーション中の特定のタイミングでイベントをトリガーする方法を学びます。
2. 使用する機能
・AnimationEditor
・Animation Events
3. 手順
まず、Roblox Studioを起動します。今回は、テンプレート「Baseplate」を使用します。
アバターを用意しましょう。「AVATER」タブから「RigBuilder」をクリックし、「Generate Rig」を選択。次に「Block Avatar」をクリックして、アバターを追加します。
すると、以下画像のようなアバターが追加されます。
「AVATER」タブから「AnimationEditor」をクリック。「AnimationEditor」ウィンドウが表示されます。
ここで先ほど追加したアバターをクリックし、アニメーション名を入力して”Create”をクリックします。
今回は、左腕を上げるアニメーションを作成してみましょう。左腕を動かすと、キーフレームが追加されます。
青いラインを動かして、左腕の角度を調整し、キーフレームを追加します。「Animation Editor」の再生マークをクリックして、動作を確認しましょう。
では、本題の「Animation Events」を見てみましょう。「Animation Editor」ウィンドウの右側の歯車マークをクリックすると、「Show Animation Events」が表示されます。
「Show Animation Events」をクリックすると、Animation Editorの上側にAnimation Eventsの行が追加されます。
設定したアニメーションの中でイベントを発生させる箇所を右クリックし、Add Animation Event Hereをクリックします。
すると、Edit Animation Eventsウィンドウが表示されます。
Event Nameにイベント名(event)を記入し、Saveをクリックします。
今回は、実際にゲームをプレイした状態でアニメーションを動作させるため、設定したアニメーションを保存していきます。Animation Editorの左側にある「…」マークをクリックし、Publish to Robloxをクリックします。
Titleを記入し、Submitをクリックします。
表示されるIDをコピーします。
アバター(Rig)の子要素にあるHumanoidの子要素にAnimationを追加します。AnimationのプロパティにあるAnimationIdに先ほどコピーしたIDを記入します。
Humanoidの子要素にScriptを追加し、以下のコードを記入します。また、さきほどのAnimationをScriptの子要素に移動させます。
local function onAnimationEvent()
print("event")
end
local humanoid = script.Parent.Parent:WaitForChild('Humanoid')
local animation = script:WaitForChild('Animation')
local animationTrack = humanoid:LoadAnimation(animation)
animationTrack:GetMarkerReachedSignal("event"):Connect(onAnimationEvent)
wait(5)
animationTrack:Play()
上記コードの簡単な解説は以下となります。
- local function onAnimationEvent()
onAnimationEvent
という関数を定義しています。この関数が呼び出されると、”event”という文字列を出力します。 - local humanoid = script.Parent.Parent:WaitForChild(‘Humanoid’)
スクリプトの親の親オブジェクトからHumanoid
という名前の子オブジェクトを探して、humanoid
という変数に代入しています。 - local animation = script:WaitForChild(‘Animation’)
スクリプトの子オブジェクトからAnimationという名前のオブジェクトを探して、animationという変数に代入しています。 - local animationTrack = humanoid:LoadAnimation(animation)
humanoidオブジェクトのLoadAnimationメソッドを使用して、先ほど取得したanimationオブジェクトをロードし、その結果をanimationTrackという変数に代入しています。 - animationTrack:GetMarkerReachedSignal(“event”):Connect(onAnimationEvent)
animationTrackのGetMarkerReachedSignalメソッドを使用して、”event”という名前のマーカーが到達したときのシグナルを取得し、そのシグナルにonAnimationEvent関数を接続しています。これにより、アニメーション中に”event”マーカーが到達したときに、onAnimationEvent関数が呼び出されます。 - wait(5)
スクリプトの実行を5秒間一時停止します。 - animationTrack:Play()
animationTrackのPlayメソッドを呼び出して、アニメーションを再生します。
全体として、このコードは特定のアニメーションをロードし、5秒後にそのアニメーションを再生するものです。また、アニメーション中に”event”という名前のマーカーが到達したときには、”event”という文字列を出力します。
この状態でゲームをプレイしてみます。
アバターのアニメーションが実施され、Output(出力)ウィンドウに「event」と表示されれば、Animation Eventが正しく機能しています。
この記事を通じて、Roblox StudioのAnimationEditorを活用してアバターのアニメーションを作成する基本的な手順と、Animation Eventsの設定方法を学びました。特定のタイミングでイベントを発生させることで、ゲームのインタラクションをよりリッチにすることができます。
コメント