Unity ジャンプ用アニメーション追加の一例

Unity


考察

キャラクターがジャンプする時にもアニメーションを付けたくなりましたが、いざやろうとするとどうすればいいか分からず調べていくと、どうやら接地判定をする必要があると知りました

リジッドボディーを使用した場合の解説が多く見受けられましたが、今回はキャラクターコントローラーを使用しているので、それに関する例を探して調べました

その結果、Terrainにて作成したフィールドにタグを付け、接地判定用のスクリプトをアタッチして試みましたがうまくいきませんでした

何故だろうと考え、元々使用していたスクリプトを見返していると、

Debug.Log(_characterController.isGrounded ? “地上にいます” : “空中です”);

の部分を発見し、自分のやらかしに気づきました

もふもふ
もふもふ

元々判定してたもふ(; ・`д・´)

_characterController.isGroundedは、キャラクターコントローラーが接地しているという意味です

? “地上にいます” : “空中です”は、

接地している場合(true)→地上にいます

接地していない場合(false)→空中です

という意味で、結果をデバッグに表示させる命令になっています

スクリプトを更新

このisGroundedを利用してジャンプ用のアニメーションを追加するためにスクリプトに手を加えてみました

Animatorのパラメータ「Ground」(のちほど作成)にtrue,falseを与える命令を、ジャンプ用の入力がされた時とそうでない時にそれぞれ加えてみました

アニメーターの設定

赤丸部分のプラスからBoolを選択し、Groundと命名します

新たにジャンプ用のステートを作成し、アニメーションを追加します

トランジションを作成します

歩き→ジャンプのトランジションの設定をします

赤丸部分の+をクリックし、Groundとfalseを選択します

ジャンプ→待機のトランジションはtrueを選択します

それぞれアニメーションの開始時間も調整しておきます

再生してみると・・・

ジャンプアニメーションは自作なので少々ぎこちないですが、やりたい事は達成できたかと思います

もふもふ
もふもふ

飛び方(;゚Д゚)

デバッグを見てみると、空中です、地上ですの回数がおかしいことになっています

これは、キャラクターコントローラーの接地判定の精度の問題か、フィッティングにコツがあるのかよく分かりませんが、精度を上げる方法があるようですので機会があればチャレンジしてみようと思います



まとめ

スクリプトへ追加した命令が正解かは分かりませんが、多少は理解を深めることが出来たかと思います

引き続き出来ることを増やしていこうと思います

タイトルとURLをコピーしました