Unityを使ったゲーム開発記録

Unityのゲーム開発などを中心に投稿していきます。何か参考になる様な記事ではなく自分用の備忘録になる為、生暖かい目で見て下さい。

Unityでのゲーム開発 〜Animator編〜

Animator

今回はAnimatorの設定をしていきたいと思います、本来であれば今まで作成していた記事ではキャラクターにモーションを設定していないので、本来はT字ポーズ(カカシの様な状態)のまま動いているハズです。
記事内容を見やすくする為に動きを付けていましたが本格的にイジってみたいと思います。

Animatorはキャラクターに動きを加える重要な役割がある為、ゲーム開発において重要な役割があります、これが付くだけでよりゲーム『っぽく』なります٩( ᐛ )و





Animator Controllerの作成

  • まずProject内に[Animator]のフォルダを作っておきます。
  • フォルダを作ったらAnimatorフォルダにカーソルを合わせて右クリック⇨[Create]⇨[Animator Controller]の順にクリックします。

今回は[ThirdPersonAnimatorController]とゆう名前にしておきます。・・・ながっ
f:id:mochisakucoco:20210321123947p:plain



モーションState(状態)の作成

Animatorのタブ内で右クリック⇨[Create State]⇨[Empty]で空のState(状態)を作ります。
⇩⇩⇩⇩⇩⇩
f:id:mochisakucoco:20210321140917g:plain

基本的にはこの状態を複数作成し、条件によってモーションを遷移出来る様にして行動1つ1つにモーションを加えていく作業になります。


まずは待機(Idle)状態を作る

どのゲームでも静止状態で止まっている場合でもモーションがあると思います。
動いてない時に静止画の様な状態で止まってたら不自然なので
*Unityでは何もモーションが設定されていない場合はTポーズになる場合が多いと思います。



今回はこの記事の一番最初にアセットストアからDLしたアセット内のモーションから選びたいと思います。
mochisakucoco.hatenablog.com

作業工程

  • 先程作成した[New State]をクリックしてMotion「Idle_Wait_A」を選択
  • Motion選択後にNew Stateの名前を[Idle]に変更(わかりやすくする為)
  • 完了したら[Player]のAnimatorコンポーネントに今回作成した[ThirdPersonAnimatorController]取り付ける

f:id:mochisakucoco:20210321153257g:plain

f:id:mochisakucoco:20210321154038p:plain

f:id:mochisakucoco:20210321154730p:plain


上の設定で出来上がったのがこちら⇩
f:id:mochisakucoco:20210321155522g:plain
この様に簡単に出来ます(*´ω`*)
まだ遷移状態がIdleしか作っていない為、動いた時は待機状態のまま動いてしまいますが、Animatorのタブを見るとIdleがしっかり起動しているのがわかると思います。


状態を遷移させて歩かせる(Walk)

基本的な状態設定が出来る様になったので(細かい設定は後ほど)、状態の遷移をしてモーションを繋げたいと思います。
状態の作り方はIdleの時と同じ方法でもう一つの新しい状態を作ります。

作業工程❶

  • New StateのMotionを「Mvm_Walk」を選択
  • New Stateの名前を[Walk]に変更
  • Make Transition(遷移を作る)⇦直訳しすぎ………
  1. Idleを選択中に右クリックでMake TransitionをクリックしてWalk側に持っていき繋げる
  2. Walkを選択中に右クリックでMake TransitionをクリックしてIdle側に持っていき繋げる

遷移状態を相互関係にした理由は一方通行にしてしまうとモーションが行ったきりで永遠に繰り返してしまうからです。
f:id:mochisakucoco:20210321163312g:plain


*遷移先を間違えてしまった時の対処法
Animatorタブ内ではDeleteが使える場所と使えない場所があります、今回の遷移状態は矢印を右クリックしてもDelete項目は出てきません。
私は使い方が分からない時はSteteを消して作り直すとゆう苦行をおかしてました_:(´ཀ`」 ∠):
そんな訳で消し方を覚えてもらった方が、今後の為にもなるので載せておきます。
f:id:mochisakucoco:20210321172925g:plain

項目の「ー」ボタンを押す!コレだけ!!






作業工程❷

  • Conditionsに設定が必要なParametersの設定
  • Float型を指定して名前を「Speed」に設定

アニメーションパラメーター - Unity マニュアル
f:id:mochisakucoco:20210322150550g:plain





作業工程❸

  • Make Transitionで作った遷移状態の設定を行う
  • 遷移状態の矢印をクリックしてInspectorで編集可能にする

⇩⇩Inspector内の細かい説明は下記の公式リファレンスから確認してください。⇩⇩
アニメーション遷移 - Unity マニュアル
f:id:mochisakucoco:20210321165323p:plain

  • Idle⇨Walkの遷移の設定
  1. Has Exit Timeのチェックボックスを外す
  2. Interruption SourceをNext Stateに変更
  3. ConditionsにSpeedを指定してGreaterを選択して数値を0.1にする

*parameter値が0.1より大きくなったら(Greater)遷移する条件付けしています。

 

  • Walk⇨Idleの遷移の設定
  1. Has Exit Timeのチェックボックスを外す
  2. Interruption SourceをNext Stateに変更
  3. ConditionsにSpeedを指定してLessを選択して数値を0.1にする

*parameter値が0.1より小さくなったら(Less)遷移する条件付けしています。


*Has Exit Timeはモーションを最後まで再生されるかどうかなのでIdleから遷移させるにはチェックを外しています。攻撃モーションなどは最後まで再生させる為にチェックを入れる事が多いです。




状態を遷移させてジャンプさせる(Jump)

 

作業工程❶

  • New Stateを作成
  • New StateのMotionを「Jmp_Base_A」を選択
  • New Stateの名前を[Jump]に変更
  • Make Transitionで遷移先を作る
  1. Idleを選択中に右クリックでMake TransitionをクリックしてJump側に持っていき繋げる
  2. Jumpを選択中に右クリックでMake TransitionをクリックしてIdle側に持っていき繋げる
  3. Walkを選択中に右クリックでMake TransitionをクリックしてJump側に持っていき繋げる

 

作業工程❷

  • Conditionsに設定が必要なParametersの設定
  • Bool型を指定して名前を「Jump」に設定

 

作業工程❸

  • Make Transitionで作った遷移状態の設定を行う
  • 遷移状態の矢印をクリックしてInspectorで編集可能にする

 

  • Idle⇨Jumpの遷移の設定
  1. Has Exit Timeのチェックボックスを外す
  2. Interruption SourceをNext Stateに変更
  3. ConditionsにBoolを指定してtrueを選択する

 

  • Jump⇨Idleの遷移の設定
  1. Has Exit Timeのチェックボックスを外す
  2. Interruption SourceをNext Stateに変更
  3. ConditionsにBoolを指定してfalseを選択する

 

  • Walk⇨Jumpの遷移の設定
  1. Has Exit Timeのチェックボックスを外す
  2. Interruption SourceをNext Stateに変更
  3. ConditionsにBoolを指定してtrueを選択する


最終的な出来上がりが⇩になります。
f:id:mochisakucoco:20210322165624g:plain


今回は、Animatorの基本的な操作を行いましたが次回はBlend Treeでモーションを滑らかに動作する様に変更していきたいと思います。