【Unity】アニメーションを用いてUnityちゃんに武器を持たせる手順
以前の記事で簡易的なアニメーションの作成方法についてご紹介しました。よろしければ以下の記事を先にご覧いただけると幸いです。
Blenderを使ってUnityにアニメーションを追加する手順
アニメーションをつくってモデルを動かしているうちに、素手のアニメーションだけじゃ物足りなくなった方、いらっしゃるのではないでしょうか?
今回はアクションの幅を広げる「武器」をUnityちゃんに持たせるための手順をご紹介していきます。
Blenderでの武器保持アニメーション作成からUnityでの調整まで一気にご紹介していきます。
本稿はユニティちゃんライセンス条項の元に提供されています。
武器アセットをダウンロードする
まずはUnityちゃんに持たせたい武器をアセットストアでダウンロードしましょう。

本稿では上記の武器アセットを使用していきます。
Blenderでアニメーションを作成する
Blenderに武器アセットをインポートする
Unity側にインポートした武器アセットを、Blender側にもインポートしていきます。これはアニメーションをつくる際に、武器をつかむ指の曲げ具合等を調整するためです。
手順は以下の通りです。
1.[ファイル]->[インポート]->[FBX(.fbx)]の手順でフォルダを開く。

2.使用する武器アセットが入っているフォルダを開く。
3.武器アセットを選択する。

もしアセットが古かった場合、以下のようなエラーログが出ます。

そういった場合は下記のURLに飛びFBXコンバーターをダウンロードしてください。
FBXコンバーターのアイコンは以下の通りです。

使用方法は簡単です。以下の手順の通り武器アセットのコンバートを行ってください。
- 「Add…」をクリックしてコンバートしたい武器アセットを選択。
- コンバート後のバージョンが最新のものであるか確認。
- 「Convert」をクリック。

コンバートされた武器アセットは、コンバート後も元の武器アセットフォルダに保存されます。
以下がコンバートされたアセットが保存されているフォルダのアイコンです。

使用したい武器アセットがコンバートされていることが確認出来たら、先ほどご紹介した手順でBlenderにインポートしてください。

武器に合わせてアニメーションを作成する
まず、武器モデルの大きさ・位置・角度は、人型ボーンがつかめるように任意の値で調節してください。

3Dビューは平行投影モードの方が調整しやすいかもしれません。テンキーの「5」で平行投影モードに変更可能です。
武器に合わせる部分は主に「手のボーン」です。武器の大きさに合わせて指の関節の角度調節をして、武器を保持しているアニメーションを作り出します。
後ほどUnity側でも様々な調節を行うため、ひとまず上記のこぶしの様な形ができれば大丈夫です。
Blenderのテンキー操作、こぶしの作り方のコツについては以下の記事をご覧ください。
【Blender】視点操作方法と人型アニメーションをつくる際のコツ
手の形が決まったら好きなアニメーションを作成していきましょう。
*手の形は変えずに他のボーンのポーズを調整していってください。手のボーンをコピー&ペーストすると楽です。

今回は以下のような待機モーションを作成し、Unityちゃんに適用していきます。
BlenderからUnityへアニメーションをエクスポートする際に、ポーズの調整用にインポートした武器アセットは削除しておいてください。
削除しておかないと武器アセットも一緒にUnityにエクスポートされてしまいます。
BlenderからUnityへアニメーションをエクスポートする手順については以下の記事をご覧ください。
Blenderを使ってUnityにアニメーションを追加する手順
Unityで位置調整
武器アセットのTransform調整
使用する武器アセットにもよりますが、以下のように武器が大きい場合があります。

細かい調整に入る前にひとまず大まかな位置・大きさ調整をしておきます。とりあえずの大きさの目安はBlenderで調節した値と同様の値がベターかと思われます。

アセットの子オブジェクト化
使用したい武器アセットを、Unityちゃんの子オブジェクトにしていきます。今回はBlender側で、左手で武器を持つように調整したため、武器アセットをUnityちゃんの「左手」の子オブジェクトにします。
ドラッグ&ドロップで簡単に子オブジェクト化できます。
*「左手」のオブジェクトは子オブジェクトの中でも奥深くにいるので注意してください。
子オブジェクト化すると以下のように武器オブジェクトもUnityちゃんの動きに合わせて、動作していくようなります。

ゲームを実行して調整する
作成したアニメーションの動かし方はお好きな方法で構いません。アニメーターコントローラー、タイムラインの使用方法については以下の記事をご覧ください。
今回はUnityちゃんに付属しているアニメーターコントローラー「UnityChanLocomotions」とスクリプト「SampleUnityChanController」を使用していきます。
「Idle」に先ほどBlenderで作成した待機モーションを入れます。

ゲームを実行してみます。
正面から見る分には問題なさそうですが、別角度から見ると粗が出ていることが確認できます。
ゲームを一時停止している状態で武器アセットのTransformの細かい調整を施していきます。


*位置、角度だけでなく手に合わせて、大きさも少し変更しています。マニピュレータを使用すると調整しやすいです。

値の設定ができたらTransform右側上部にある歯車のマークをクリックして「CopyComponent」を選択してください。

その次にゲームを終了し、武器アセットを選択して同様に歯車をクリックして「PasteComponentValue」を選択してください。

これで先ほど調整した武器アセットのTransformが、デフォルトで反映されている状態になりました。
再びゲームを実行してみましょう。

人差し指が埋もれていたり、少し手の甲をはみ出たりと若干の粗さは残るものの、武器を持たせることができました。
*おまけ
一度武器のTransformが調整できると、上記のようなアニメーションも簡単に作成できます。よろしければチャレンジしてみてください。
回転アニメーションについては以下の記事をご覧ください。
【Blender】180°以上の回転アニメーションをつくる際の注意点
まとめ
いかがでしたでしょうか。今回はUnityちゃんに武器を持たせてみました。アセットストア、Blender、Unityと横断的にご説明してきたため混乱された方もいらっしゃるかもしれません。申し訳ありません。
アニメーションの作成、細かいTransformの調整は少し手間がかかりますが、キャラクターの動きの質はかなり向上します。
キャラクターを好きに動かしたい方、様々なモノをキャラクターに持たせたい方は、今回ご紹介した手法を応用して、アニメーションの動きの幅を広げてみると面白いかもしれません。
Blenderにおけるアニメーション作成、Unityのアニメーション機能について興味を持った方はこちら↓

この記事はいかがでしたか?
もし「参考になった」「面白かった」という場合は、応援シェアお願いします!