こんにちは、前回は歩くアニメーションを配列でUpdateで作りましたが、UnityのMecanim(メカ二ム)というツールを使ってアニメーションの遷移をするやり方の方が、ナウいヤングのやり方みたいなので、そちらの方法で「歩く」とか「ジャンプ」のアニメーションをつくろうと思います。
とりあえず心機一転作っていくため、前回つくったHierarchyのPlayerを削除しときます。
Projectから歩きのプレイヤー画像を3つ選択して、Sceneにドラッグ&ドロップします。
Hierarchyにも追加されているので、名前を「Player」とかにしておきます。
あと、Projectに2つファイルができます。
上の方がAnimation Controller(Player)というやつで、「歩く」、「ジャンプ」なんかを命令するファイルです。
下のAnimation Clip(Walk)でさっきSceneに追加した歩くのアニメーションデータが入ってるファイルです。
それぞれ、名前をPlayerとWalkにしときます。また、InspectorにもAnimatorというコンポーネントが追加されてます。
ここで再生ボタンを押します。
なんていうことでしょう(ビフォアフター風)、すでに歩くアニメーションが出来上がってます。
これはさっきのProjectにあるAnimation ClipファイルがWalkが再生されてます。
このままだと、空中お散歩になるので、前回同様にRigidbody 2DとCricle Collider 2Dをアタッチしときます。
次に、ジャンプのアニメーションを作ります。
ジャンプの画像は1枚しかないので、歩くのアニメーションの時のように3つ選んでドラッグ&ドロップとかして自動でAnimation Clipファイルを作ことができないので、手動で作っていきます。
たぶんこちらのやり方が本来の作り方かと思われます。
メニューの[Windows]がら[Animation]を選択。
そしたらAnimationのパネルが出てきた状態でHierarchyのPlayerを選択状態にします。
そして、リストのPlayerの三角アイコンをクリックすると、歩くアニメーションの画像つきのタイムラインが出てきます。
左上の「Walk」をクリックして[Create New Clip..]をクリック。保存のダイヤログが出てくるので、Jump.animの名前で保存。
Animationのタイムラインに、プレイヤーのジャンプの画像をドロップして持ってきます。
ProjectにもJumpのAnimation Clipファイルが出来上がってます。
HierarchyにあるAnimation ControllerのPlayerを、ダブルクリックしてAnimatorのパネルを表示させます。
ステートといわれる角丸四角のものがいくつか表示されています。
もし、ステートの名前がplayer_0とかになっていたら名前をWalkに変えときます。
このAnimatorのパネルで、歩くとかジャンプだとかのアニメーションの命令をコントロールします。
Walkのステートで右クリックして、「Make Traditon」をクリックします。
そうすると、線が出てくるのでそれをJumpのステートのところにクリックして線でつなげてあげます。
逆にJumpからWalkへの矢印線もつなげておきます。
これで、WalkからJumpへ、またJumpからWalkへアニメーションへ移行する導線ができました。
次に、Animatorのパネル左のところにPrametersをクリックし、「+」ボタンをクリックして「bool」を選びます。
名前はGroundにします。
つまり、このGroundにチェックが入ってtrueのときWalkアニメーションにして、チェックが入ってなくてfalseの時はJumpアニメーションにするという風にする感じです。
この条件を実際にどこに適用していくかというと、さっきつくったステートから出ている矢印線です。
まずwalkからJumpに向かってる方の矢印線をクリックします。
InspectorにConditionsがあるのでそこの「+」をクリックしてGroundを選択してfalseにしておきます。逆にJumpからWalkに向かっている矢印線の方はJumpをtrueにします。
そして、ここで再生ボタンを押して確認します。
マウスでAnimatorのパネルのJumpのチェックボックスを付けたり外したりすると、ちゃんとアニメーションが切り替わってます。
このような感じで、視覚的にアニメーションの切り替え編集ができるので分かりやすいです。
また、今回はGroundのチェックボックスの切り替えは、直接マウスクリックを行いましたが、通例はスクリプトからの命令でやるみたいです。
今度は機会があればその辺のことを書きたいと思います。
ありがとうございました。