【Unityアセット】GameCreatorで4足歩行の動物を動かしたい
こちらはUnityアセット冬のアドベントカレンダー2019の6日目の記事です。
目的
Unityのアセット『GameCreator』で4足歩行の動物を動かす。 なぜなら、ブラックフライデーで動物アセットを衝動買いしてしまったので…!
GameCreatorってなんじゃい
GameCreatorでできることは
です。
(追加アセットなども制作されているようで、私はシューターモジュールを買ったりしています。)
GameCreatorで動かせるキャラクターは基本的には人型、Humanoidのモデルです。 Humanoidモデルであれば、インスペクターにモデルデータをドラッグアンドドロップするだけで、すぐにキャラクター操作ができるようになります。
さて、ここに4足歩行の動物モデルを置いたらどうなるでしょう。
アニメーションがだめみたいですね!
アニメーションに対応してやるよ!
GameCreatorにはステートという機能があります。 Animatorを個別のアセットに対応させるための機能です。 今回の場合は、humanoidのAnimatorを狼のモデルに対応させます。
やることは
- プロジェクトウィンドウで右クリックして、ステートを作成する
- ヒエラルキーで下記の項目に狼のアニメーションを設定する
- Idle、RunForward、JumpRun、JumpIdle、WalkForward
- モーションをイイ感じに修正する
ステートをつくって設定する
まずはステートをつくりましょう。 プロジェクトウィンドウからGameCreatorを選んで、Locomotion Stateを作成しましょう。 Locomotionは移動用のアニメーションだそうです。(ジャンプも含まれます)
次に作成したステートにAnimation Clipを設定しましょう。 初期状態ではなにも設定がされていないので、狼用のAnimation Clipを追加します。
最後にPlayerオブジェクトにステートを設定しましょう。(正確にはCharacter Animatorというコンポーネントに) Playerオブジェクトを選択し、Default Stateに先ほど作成したステート(WolfLocomotion)を割り当てましょう。
これで動くか確認します。再生ボタンをクリック!
再生します。
動くようになりました!けどなんだこの動きは。
Animation Clipの問題です。オブジェクトルートの位置情報がアニメーションに組み込まれているので、こんな動きになっちゃいます。 なので各Animation Clipからこれらの不要な位置情報を消します。
はいここで再生。
それっぽくなりました!けどかがんでる状態からジャンプできていますね。膝だけであれだけの跳躍を。
ジャンプのタイミングをイイ感じにしてやるよ!
ならばジャンプのタイミングをイイ感じにしましょう。 要はアニメーションを再生してから、任意の秒数を待機して実際の位置情報でジャンプを開始すればよいのです。
スクリプトを修正する
Playerの挙動はPlayerCharacterコンポーネントで書かれています。 PlayerCharacter.csを複製してスクリプトを修正します。 ファイル名はPlayerFoxCharacter.csにしました。
PlayerCharacterの代わりにPlayerFoxCharacterをアタッチします。 Time Between Jumpsを0.3に設定しましょう。 本来はジャンプ間のクールタイムですが、修正したスクリプトでは、 ジャンプ前の待機時間にも反映させるようにしています。
再生ボタンを押します。
すごくいい感じじゃないですか!?大変よいと思います!
他のアニメーションも追加、落下処理を調整など、もっとよくするための作業は残ってますが、 あとは同じような作業の繰り返しなので省略します。
というわけでここでタイマーストップです。 お疲れ様でした。