FPSを作ってみよう7-アニメーションの作成とUnityでの取り込み-

今回はUnityのFPSゲームで使用するアニメーションをblender2.76bで作成し、Unityで使用するところまでをやりたいと思います。

前回

FPSを作ってみよう6-キャラクターのジャンプ機能を搭載する-
FPSゲームでジャンプする機能を作成します。立っている時歩いている時と走っている時で飛ぶ高さを調整出来るようにしていきます。

FPSゲームのキャラクターにジャンプ機能を取りつけました。

スポンサーリンク

今回作成するアニメーション

今回作成するアニメーションは

キャラクターが立っている時や歩いている時などに銃を持っているアニメーション
キャラクターが銃を敵に向けるアニメーション
キャラクターが銃を撃つアニメーション

の3つを作成します。

アニメーションを作成する前の準備は

blender2.76bにmakehumanデータの取り込みとUnityへのインポート1
人型キャラクター作成ソフトMakeHumanで作成したキャラクターを3DCG作成ソフトBlenderへの取り込み方と出力、それからUnityへと取り込む方法
blender2.76bにmakehumanデータの取り込みとUnityへのインポート2
MakeHumanで作成したキャラクターをBlenderに取り込み、ボーンを設定しリグを取りつけます。Unityで使うアニメーションを作成する時に便利です

を参考にアニメーション付けをする仮のキャラクターを作成してください。

アニメーションを作成する方法は

blender2.76を使ってUnityで使うアニメーションを作成する
Unityで使用するキャラクター用のアニメーションをBlenderを使って作成していきます。作成方法を学べば自分のゲームに自前のアニメーションを使うことが出来ます。

を参照してください。

アニメーションの作り方は上記の記事をご覧いただくと作成出来ます。
blenderでのリギング作業までは難しく感じるとは思いますが・・・・(^_^;)

もちろんアニメーションは自前でなくてもAsset Storeで探したものや他サイトで配布されているものを使用してもかまいません。
blenderの大変な作業をしたくない方はそちらの方がいいかも?

FPSを作ってみよう2-Standard AssetsのEthanをモデルとして使い動かす機能を取りつける-
FPSゲームのキャラクターにStandard AssetsのEthanをモデルとして使いCharacterControllerコンポーネントを取りつけるまでをやります

で記載している通りボーンの設定の問題とボーンの設定されたキャラクターとアニメーションによっては元のアニメーションと変わってしまう事もあります。

それではblenderで作るアニメーションを見ていきます。
作り方はさきほど記載したリンク先を参照してください。

銃を持っているアニメーションGunIdleを作成

GunIdleのDopeSheet

まずはGunIdleアニメーションを作成していきます。

GunIdleアニメーションは銃を持っている状態で止まっているだけのアニメーションなので、フレームを1の所に移動して手の位置や足の位置を調整し
位置を保存するだけです(上の画像では0フレームに作成していますが1フレームにしてください)。

GunIdleのアニメーション

GunIdleアニメーションは銃を持っているように右手を丸め、左手を右手を添えるような位置に持っていきます。

左手のひじの角度は隙間だらけのボールみたいなやつ?(赤い四角の中)を動かして角度を調整してください。

これの位置を調整しないとひじの角度が窮屈な感じになってしまいます。

UnityでIKを使って左手の位置や角度は調整するので、左手は厳密に合わせなければと考えなくても大丈夫です。

IKに関しては

UnityのIKを使ってキャラクターがはしごを登るアニメーションを作る
UnityのIKを使ってキャラクターがはしごを登るようなアニメーションを作成していきます。

等のIKに関する記事を参照してください。

右手の位置もIKで調整する事も出来ますが、今回は右手はちゃんと合わせておきます。

足の位置はUnity側で歩きや走り等の別アニメーションを下半身に設定するので気にしなくて大丈夫です。

銃を構えるアニメーションWaitShotの作成

WaitShotのDopeSheet

次は銃を構えるアニメーションWaitShotを作成します。

1フレーム目はGunIdleのフレーム1をコピーし(GunIdleのフレーム1上でフレーム全体を選択しCtrl+Cキー)、
WaitShotの1フレーム目を選択した状態でCtrl+Vキーを押してペーストします。

これは銃を構える前の状態はGunIdleと同じで、そこから銃を構える状態にしていくからです。
ここで同じ位置にない場合、UnityでGunIdle→WaitShotとアニメーションを遷移させた時に体がぶれてしまいます。

GunIdleでは下半身は気にしないでくださいと言いましたが、WaitShotの下半身は銃を撃つ時の下半身(移動していない時の)として使うので足を開いた状態を作ります。

次のフレームは10フレームでここでは銃を構え終わった状態で手の位置を移動させてキーフレームを打っています。

WaitShotの構え終わりのモーション

10フレーム目は↑のような位置に手を持っていきます。

銃を構え終わった時は手の高さが目の先の辺りにくるようにします。

Unityで使用するキャラクターによっては目の高さと手の高さが合わない事もあるので(blenderでアニメーションをつけてるキャラクターと目の位置が違う為)
アニメーションを作成した後にUnityに取り込み調整していく必要があります。

Unity側で両手ともにIKを使って位置を調整する場合は結果として右手が銃を持っている部分の作成のみで大丈夫かもしれません。

ただ今後は左手のみIKを使って記事の内容が進みますので、右手のIKの設定はご自分でしていく必要がありますのでご了承ください。

銃を撃つアニメーションShotを作成

次は銃を打った時のアニメーションShotを作成していきます。

ShotのDopeSheet

フレーム1、10、20にキーフレームが打ってあります。
フレーム1と20はWaitShotの10フレーム目をコピーしています。

フレーム10はフレーム1の状態から手の位置を少し上にあげ角度も上に回転させます。
フレーム10が銃を打った時の手の位置になります。

Shotの銃を撃った後の手の位置

↑がフレーム10の時の手の位置です。
フレーム0の時より手が少し上に位置しています。

これで銃を持っている時のGunIdle、銃を構えるWaitShot、銃を打つShotのアニメーションが出来上がりました。
File→Export→FBXを選択し、ForwardをZ Forward、ArmaturesのOnly Deform Boneにチェックを入れて保存先フォルダを指定しExport FBXボタンを押してください。

作成したアニメーションをUnityに取り込む

FBXファイルをインポートする

Unityのメニュー→Assets→Import New Asset…を選択し、さきほど出力したFBXファイルを選択します。

取り込んだFBXファイルの中身

↑が取り込んだFBXファイルです。

ひとつ作っていないはずのアニメーションがありますが、これは無視してください。
(最初銃を持っている位置を右斜め下にしようと思って作っていたけど採用しなかったので残ってます。消し方がわからないので残ってます(^_^;))

FBXファイルのImportSettingsでHumanoid型にする

FBXファイルを選択してインスペクタを表示し、Import SettingsでRigをHumanoid型に変更してApplyボタンを押します。
これでUnityでHumanoid型として扱えるようになったので、キャラクターであるEthanにアニメーションを適用する事が出来るようになりました。

今回作成したアニメーションはある程度そのまま使用出来る状態のものを作成しています。

ですが、キャラクターの右手が銃を持っているような状態のアニメーション(右手部分だけあればよし)と下半身が銃を構えている時の状態があればUnityのIKを使うと厳密なアニメーションがなくてもなんとかなるかもしれません。

両手の位置はIKを使って銃を持っているようにみせて、銃を撃った時のアニメーションはUnity側のAnimationで銃の位置や角度を変更するアニメーションを作成すれば
手の位置や角度はIKで銃の手の位置に固定されるので銃の位置に合わせて手の位置が動き、銃を撃ったアニメーションが出来上がります。

blenderで作ったアニメーションがUnity側でうまく動作出しない時やうまく合わない時、そもそもblenderが使えない方はこちらの方法を試してみるのもありかもしれません。

次回はIKを使ってアニメーションを変更します

次回は作成したアニメーションをキャラクターに設定し、銃を構えたり撃ったり出来るようにしますが、今回アニメーションを作らず、両手のIKとUnityのAnimationで
銃を構える、撃つアニメーションを作りたい方用に両手のIKの設定と銃を構えるアニメーションの作り方も載せたいと思います。

なぜ次回になるかと言うと次回で初めてIKを使うことになるのでそれ以降に作成した方がいいと思うからです。

ただ、わたくしの記事の進め方としてはblenderで作成したアニメーションと左手のIKだけを使ったやり方になるので、
両手のIKとUnityのAnimationを使ったアニメーションの内容は書きません。

それと途中で出来なくなる可能性もあるので注意してください。

あくまでこういうやり方も出来ますよという補助的な内容になります。