【Unity / PlayMaker】アニメーションの途中でイベントを発生させる

この記事では、Unityのアニメーションシステムとmixamo、PlayMakerを組み合わせて、アニメーションの途中でイベントを起こす方法について解説します。

アニメーションを任意のタイミングでイベントを発生させることで、アニメーションに合わせて音を再生したりオブジェクトを生成することができるようになります。

さまざまな演出に応用できるので、ぜひマスターしてみましょう。

アニメーションの途中にパーティクルを生成している

アニメーションの途中にパーティクルを生成している

今回の記事では有料アセットであるPlayMakerを使用します。
持っていない場合は事前にダウンロードして下さい。

サンプル

まずはサンプルとなるシーンを確認してみましょう。
今回はキャラクターがパンチしたタイミングでパーティクルを生成するイベントを発生させます。

また、今回は3Dモデルツールであるmixamoを使用します。
mixamoを初めて使う方は以下の記事もご参照ください。

キャラクターの作成(mixamo)

mixamoとはAdobe社が提供しているツールで、簡単に3Dモデルにアニメーションを組み合わせられます。

mixamo: https://www.mixamo.com/#/

今回使用するのはこのキャラクターです。

Mutantモデル

Mutantモデル

アニメーションはこの「Mutant Punch」のモーションを使用します

Mutant Punchアニメーション

Mutant Punchアニメーション

「ダウンロード」から「FBX for Unity」の形式でダウンロードしましょう。

キャラクターの作成(Unity)

モデルの作成

次に、Unityでダウンロードしたキャラクターのアニメーションを再生できるようにします。
ダウンロードしたFBXファイルをUnityプロジェクト内に追加し、ミュータントをシーン内に追加してください。

Mutantをシーンに配置

Mutantをシーンに配置

しかしこのままではマテリアルがアタッチされていないため、マテリアルの設定をします。

キャラクターの「Import Settings」の「Material」を選択して「Location」を「Use External Materials (Legacy)」に変更し、右下にあるApplyボタンを押してください。

Materialの設定

Materialの設定

するとMaterialフォルダと、キャラクター名と同名のフォルダの二つが新しく生成されます。

新しく生成されるフォルダ

新しく生成されるフォルダ

Materialフォルダ内にあるマテリアルを選択し、「shader」をUnlit/Textureに変更します。
そして、キャラクター名のフォルダにあるテクスチャを適用してください。

マテリアルのシェーダーを変更

マテリアルのシェーダーを変更


テクスチャを選択

テクスチャを選択

これでモデルを作成できました。

ダウンロードした通りのキャラクターになる

ダウンロードした通りのキャラクターになる

アニメーションの作成

次にアニメーションの設定をします。
まず、アニメーターを用意します。
プロジェクトウィンドウ内のAssetsフォルダで右クリックし、「Animator Controller」を作成してください。

アニメーターを作成

アニメーターを作成

名前は「Mutant Animator」に変更し、ヒエラルキー内のmutant@Mutant Punchにドラッグ&ドロップしてアタッチしてください。

アニメーターを3Dモデルにアタッチ

アニメーターを3Dモデルにアタッチ

FBXファイルを選択し、アニメーションを表示させます。
アニメーションを[Ctrl + D](Macの場合は[Command + D])で複製してください。

複製したMutant Punchのアニメーションを選択し、インスペクターウィンドウの「Loop Time」にチェックを入れます。

アニメーションを複製

アニメーションを複製

Mutant Animatorをダブルクリックしアニメーターウィンドウを開きます。

複製したMutant Punchのアニメーションをアニメーターウィンドウ内にドラッグ&ドロップして追加してください。

アニメーションをコントローラに追加

アニメーションをコントローラに追加

この状態で再生ボタンを押すと、ミュータントがパンチするようになります。

しかし、このままではずっとパンチしてしまうので、アイドル状態を追加します。
再びmixamoを開き、Idleのモーションを使ったMutantをダウンロードします。
Mutant Punchと同様の手順でMutantAnimatorにアニメーションを追加してください。

Idleアニメーションを追加したら、AnimatorウィンドウでIdleを右クリックし、「Set as Layer Default State」に設定します。
これで再生時にIdleアニメーションが再生されるようになります。

Idleをデフォルトの状態に設定

Idleをデフォルトの状態に設定

再びIdleを右クリックし、次に「Make Transition」を選択します。
矢印をMutant Punchにつなげてください。
これで、Idleの再生後にMutant Punchへ遷移するようになりました。

同様にMutant Punchから Idleへの遷移も追加してください。

アニメーションの遷移を追加

アニメーションの遷移を追加

これでアニメーションの設定が完了しました!

パーティクルの用意

キャラクターの作成が出来たので、次に生成するパーティクルをシーンに追加しましょう。

今回は以下のアセットを使用します。
Unity Technology社が提供している公式のアセットで、無料でダウンロードできます。

このアセットは多くのパーティクルが用意されているので今回は使用するものだけインポートします。

今回使用するのはEffect Examples > Magic Effectsのみです。
それ以外のファイルはインポート時にチェックを外してください。

アセットをインポートする

インポートするアセット

Magic Effects > Prefabs 内にある「Earth Shatter」を選択し、インスペクターウィンドウから「Looping」のチェックを外してください。

Loopingのチェックを外す

Loopingのチェックを外す

これでパーティクルの用意は終了です。

イベントを発生させる

最後にPlayMakerを使ってアニメーションの再生中にイベントを起こす設定をします。

今回はMutant Punchのパンチが打たれたタイミングでEarth Shatter が生成されるようにします。
まずはイベントを作成しましょう。ミュータントにFSMを追加してください。
イベントタブからイベントを追加します。今回はSpawnParticleというイベント名にしましょう。

イベントの作成

イベントの作成

FSMタブを右クリックし、「Add Global Transition」からSpawnParticleを選択します。

遷移の追加

遷移の追加

SpawnParticleから繋がる状態の設定は以下のように設定します。

FSMの設定_1

FSMの設定_1


FSMの設定_2

FSMの設定_2

次にアニメーションからSpawnParticleを発生させましょう。
AssetsフォルダからMutant Punchのアニメーションファイルを選択してください。

するとアニメーションウィンドウが以下のようになっていると思います。

アニメーションウィンドウの状態

アニメーションウィンドウの状態

この状態でアニメーションをプレビューしながら、どこでイベントを発生させるか調整します。
今回は15フレーム目にイベントを呼び出してみましょう。

スライダーを15フレーム目に合わせ右クリックから「Add Animation Event」を選択します。

アニメーションイベントの追加

アニメーションイベントの追加

インスペクターウィンドウから、Function > SendEvent(String)を選択してください。
その後、下のStringの部分に呼び出したいイベントである「SpawnParticle」を入力します。

SendEventを設定

SendEventを設定


Event名を指定

Event名を指定

この状態で再生ボタンを押すとミュータントがパンチを放ったタイミングでパーティクルが再生されます。

完成形の確認

完成形の確認

後は、ステージを作りましょう。
Planeなどを追加しても良いし、Terrainを使えば地形のあるステージを簡単に作れます。
Terrainに関する記事は以下の記事をご参照ください。

STYLYにアップロードする方法

完成したら、実際に3DモデルをSTYLYにアップロードしてみましょう。

STYLYアカウントを作成する

UnityからSTYLYにアップロードする方法

今回のシーン・プレハブはデータサイズが大きいです。
アップロードに時間がかかる場合は、データサイズを削減する方法が以下の記事に掲載されているので試してみてください。

今回は、UnityのアニメーションシステムとPlayMakerを組み合わせて、任意のタイミングでイベントを起こす方法を紹介しました。

組み合わせる3Dモデルとイベントによってさまざまな表現をシーン上で可能です。
是非、いろいろな組み合わせを試して皆さんのシーン作成に活用してみてください!

未経験から VR/AR コンテンツ制作を学ぼう

VR/ARコンテンツ制作に必要なUnity・PlayMakerを基礎から応用まで学べ、STYLYで配信されている魅力的なコンテンツの制作過程(制作技術も公開します)を学べる オンライン学習サイト NEWVIEW SCHOOL ONLINE 開講中!!

  • プログラミングコードをかかず、VR/ARコンテンツを制作可能
  • 公式監修によるUnity講座を用意
  • フォトグラメトリ制作方法、コンテンツ軽量化などの追加要素あり
  • VR/ARコンテンツを作るための考え方を学習できる