この記事では、Unityのアニメーションシステムとmixamo、PlayMakerを組み合わせて、アニメーションの途中でイベントを起こす方法について解説します。
アニメーションを任意のタイミングでイベントを発生させることで、アニメーションに合わせて音を再生したりオブジェクトを生成することができるようになります。
さまざまな演出に応用できるので、ぜひマスターしてみましょう。
今回の記事では有料アセットであるPlayMakerを使用します。
持っていない場合は事前にダウンロードして下さい。
サンプル
まずはサンプルとなるシーンを確認してみましょう。
今回はキャラクターがパンチしたタイミングでパーティクルを生成するイベントを発生させます。
また、今回は3Dモデルツールであるmixamoを使用します。
mixamoを初めて使う方は以下の記事もご参照ください。
キャラクターの作成(mixamo)
mixamoとはAdobe社が提供しているツールで、簡単に3Dモデルにアニメーションを組み合わせられます。
mixamo: https://www.mixamo.com/#/
今回使用するのはこのキャラクターです。
アニメーションはこの「Mutant Punch」のモーションを使用します
「ダウンロード」から「FBX for Unity」の形式でダウンロードしましょう。
キャラクターの作成(Unity)
モデルの作成
次に、Unityでダウンロードしたキャラクターのアニメーションを再生できるようにします。
ダウンロードしたFBXファイルをUnityプロジェクト内に追加し、ミュータントをシーン内に追加してください。
しかしこのままではマテリアルがアタッチされていないため、マテリアルの設定をします。
キャラクターの「Import Settings」の「Material」を選択して「Location」を「Use External Materials (Legacy)」に変更し、右下にあるApplyボタンを押してください。
するとMaterialフォルダと、キャラクター名と同名のフォルダの二つが新しく生成されます。
Materialフォルダ内にあるマテリアルを選択し、「shader」をUnlit/Textureに変更します。
そして、キャラクター名のフォルダにあるテクスチャを適用してください。
これでモデルを作成できました。
アニメーションの作成
次にアニメーションの設定をします。
まず、アニメーターを用意します。
プロジェクトウィンドウ内のAssetsフォルダで右クリックし、「Animator Controller」を作成してください。
名前は「Mutant Animator」に変更し、ヒエラルキー内のmutant@Mutant Punchにドラッグ&ドロップしてアタッチしてください。
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を右クリックし、次に「Make Transition」を選択します。
矢印をMutant Punchにつなげてください。
これで、Idleの再生後にMutant Punchへ遷移するようになりました。
同様にMutant Punchから Idleへの遷移も追加してください。
これでアニメーションの設定が完了しました!
パーティクルの用意
キャラクターの作成が出来たので、次に生成するパーティクルをシーンに追加しましょう。
今回は以下のアセットを使用します。
Unity Technology社が提供している公式のアセットで、無料でダウンロードできます。
このアセットは多くのパーティクルが用意されているので今回は使用するものだけインポートします。
今回使用するのはEffect Examples > Magic Effectsのみです。
それ以外のファイルはインポート時にチェックを外してください。
Magic Effects > Prefabs 内にある「Earth Shatter」を選択し、インスペクターウィンドウから「Looping」のチェックを外してください。
これでパーティクルの用意は終了です。
イベントを発生させる
最後にPlayMakerを使ってアニメーションの再生中にイベントを起こす設定をします。
今回はMutant Punchのパンチが打たれたタイミングでEarth Shatter が生成されるようにします。
まずはイベントを作成しましょう。ミュータントにFSMを追加してください。
イベントタブからイベントを追加します。今回はSpawnParticleというイベント名にしましょう。
FSMタブを右クリックし、「Add Global Transition」からSpawnParticleを選択します。
SpawnParticleから繋がる状態の設定は以下のように設定します。
次にアニメーションからSpawnParticleを発生させましょう。
AssetsフォルダからMutant Punchのアニメーションファイルを選択してください。
するとアニメーションウィンドウが以下のようになっていると思います。
この状態でアニメーションをプレビューしながら、どこでイベントを発生させるか調整します。
今回は15フレーム目にイベントを呼び出してみましょう。
スライダーを15フレーム目に合わせ右クリックから「Add Animation Event」を選択します。
インスペクターウィンドウから、Function > SendEvent(String)を選択してください。
その後、下のStringの部分に呼び出したいイベントである「SpawnParticle」を入力します。
この状態で再生ボタンを押すとミュータントがパンチを放ったタイミングでパーティクルが再生されます。
後は、ステージを作りましょう。
Planeなどを追加しても良いし、Terrainを使えば地形のあるステージを簡単に作れます。
Terrainに関する記事は以下の記事をご参照ください。
STYLYにアップロードする方法
完成したら、実際に3DモデルをSTYLYにアップロードしてみましょう。
UnityからSTYLYにアップロードする方法
今回のシーン・プレハブはデータサイズが大きいです。
アップロードに時間がかかる場合は、データサイズを削減する方法が以下の記事に掲載されているので試してみてください。
今回は、UnityのアニメーションシステムとPlayMakerを組み合わせて、任意のタイミングでイベントを起こす方法を紹介しました。
組み合わせる3Dモデルとイベントによってさまざまな表現をシーン上で可能です。
是非、いろいろな組み合わせを試して皆さんのシーン作成に活用してみてください!
未経験から VR/AR コンテンツ制作を学ぼう
VR/ARコンテンツ制作に必要なUnity・PlayMakerを基礎から応用まで学べ、STYLYで配信されている魅力的なコンテンツの制作過程(制作技術も公開します)を学べる オンライン学習サイト NEWVIEW SCHOOL ONLINE 開講中!!
- プログラミングコードをかかず、VR/ARコンテンツを制作可能
- 公式監修によるUnity講座を用意
- フォトグラメトリ制作方法、コンテンツ軽量化などの追加要素あり
- VR/ARコンテンツを作るための考え方を学習できる