unityプレイヤー(キャラクター)を移動させる歩かせる走らせる2、動作のアニメーション、モーションの設定

キャラクターの位置移動に合わせて歩き動作(アニメーション、モーション)をいれていきます

現時点でスーって移動しているだけのキャラをキー入力に合わせて、歩きモーション等を設定していきます

目次

アニメーションさせる為の大まかなながれ
このページでは、アニメーションのことを説明していきます。
スクリプトの前に前準備設定
ここの前準備しだいで想定外の動きになったりします。(要注意)
スクリプトの編集

アニメーションさせる為の大まかなながれ

unityプレイヤーを移動させる1で作ったスクリプト等を使います。必要に応じてみてください。できるだけこのページ内で完結できるようになってますが、このぺーじのみのスクリプトだと、キャラクターがそのばでアニメーション(歩きモーション等)するだけで、座標的ないどうは、しません

スクリプトを編集する前にやる準備がいがいとあります、まずこれを設定して、プレイヤーを移動させる1で作った(カテゴリから飛んでみてください)スクリプトのキー入力のif文の中にアニメーションの記述をしていきます

今回僕が難しいと感じたところは、スクリプトよりアニメーターコントローラーとか前準備の段階でした
ページ内目次へ

スクリプトの前に前準備

注意点 アセットとかで、持ってきたモデルを使うときは、必要のないもの消さないといけないものがあるかもしれないので気をつけてください、主に最初からついてるスクリプトとかanimatorcontrollerとかキャラクターコントローラーは消したほうがいいです、どのモデルを使ってるかにもよるので、いろいろためしてください

プロジェクトのとこでcreate> animatorcontrollerでAnimatorControllerを新規作成します

それをモデルにアタッチしてください

モデルにアタッチしたanimatorcontrollerにあるapply rootmotionのチェックは、はずしてください

これは、アニメーションに移動処理が付与されてる場合それを使うってことらしいです(使う予定がないので調べてません)僕のスクリプトだと移動処理処理があるのでチェックは外しました

プロジェクト内にあるanimatorcontrollerをダブルクリックすると

それを設定する画面が出てきます、entryから繋がっているやつを待機状態(idleこう書くのが定番らしい)に変更してください右クリックでcreateenptyをして名前をwalkにして貼り付けるでそれからトランジション(矢印遷移)をつなげますstateの上で右クリックしてmaketransitionで作れますトランジションは、walkeからidle、idleからwalkeの2つ作ってください、トランジションの設定HasExitTimeのチェックは、行き来両方はずしてください、これは、アニメーションが終わると自動で遷移するものらしいです

次にアニメーションを遷移させる条件に使うboolを作ります

初期配置の画面なら左上にあるプラスのボタンからboolを作ってください

名前は、ステートと全く同じ名前でいいと思います、スクリプトで使うときに混乱しそうなので僕はそうしています

トランジションの設定のconditionのプラスを押して今作ったとこにセットしますトランジションの遷移方向に合わせてfalse,trueを設定してください

トランジションを選択した後にインスペクターで設定できます。

どの状態(boolがfalseかtrueか)でアニメーションをトランジションの向きに遷移させる設定です

先ほど説明不足でしたが、idleとかwalkとかつけた箱の名前をステートというらしいです、それの詳細のところのmotionのところにアニメーションのファイルを選択し設定してください、これでトランジションから遷移してきたらそのアニメーションが動きます

テストプレイするとentry(ゲームが始まったらこの動作)から繋がっている、idleステートに設定した待機モーションが動くはずです次はスクリプトのほうで遷移条件のboolの変更とアニメーションをさせる記述をしていきます
ページ内の目次に戻る

スクリプトを編集していきます

unityプレイヤーを移動させる1で作ったスクリプトの
void Start(){}これの中に
animator=GetComponent<Animator>();を宣言(みたいなもの)を作ります、これは、animatorにゲットコンポーネント(アニメーターの機能を使います)という意味です、おまじないと思って必ずやってくださいanimatorと名付けてあるところは、好きな名前をつけて大丈夫だと思う、僕は、文字数多いの嫌なのでanim=でゲットコンポーネントしてます
続いてvoid updateの中にある前に作ったif文の中に

if(InputGetKey(KeyCode.w))  //このピンクの括弧閉じぬけてること、コメントで教えてもらいました。
{               //ブログ用に配置考えているときに消えてたのかも、注意しないといけないです。すいませんでした。
key_w =true;
anim.Setbool("walk",true); //これを追加記入する
}
if(InputGetKeyUp(KeyCode.w)) //見逃してましたここもぬけてました。すいません
{
key_w = false;
anim.Setbool("walk,false");//キー離したら待機状態に戻すため
}

ここまでを前後左右の移動分作ったら完成のはずですが、その前に一度テストプレイしてみましょう

空中で歩きモーション出ちゃうのは、仕様ですw気になる人は、wasd入力の条件にも地面に接触の時だけを入れておけば、なおります

使用したキャラは、サファイアートちゃんですライセンスのロゴもいれてみました

unityプレイヤーを移動させる1

このページと合わせてみてください

コメント

  1. 匿名希望 より:

    通常の検索ワードでも上位に表示されるため、少なくとも非常に単純なコンパイルエラーは修正していただけるとありがたいですね。

    ifのカッコなし、”のscopeミスなど。

    • ふみみん より:

      コメントありがとうございます。修正しました。こういうエラーのことをscopeミスっていうんですね勉強になります

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