Unity 移動、攻撃、ジャンプをアニメーションで動かしてみよう Unity学習16
どうもこんばんはゆうきやんです!
最近ずっとパソコンを使っているので
目がしょぼしょぼしています。
目が疲れてきた時はスマホで
ゲームをしています。
逆効果ですね!!笑笑
冗談は置いといて、本題に入っていきましょう!
移動、攻撃、ジャンプをアニメーションで動かしてみよう!
まず3Dでプロジェクトを開いてください。
次に、エディタ上にあるWindow⇨Assets Storeより
Warrior Pack Bundle 2 FREEをダウンロードしてインポートしてください。
※アセットの使い方が分からない方は下記記事を参考にしてください。
phoenix9056.hatenablog.com
エディタ画面に戻って、①のHierarchyの+から3D Objectより②の>b>Paneを作成してください。
次に③と④の▶︎をクリックしてファイルを開いていき、
⑤のPrefabs内にある⑥をドラッグしながらScene内のPlaneの上に
設置しましょう。
Project内にある①のAssetをクリックして②のAnimator Controllerを
マウスの右クリック⇨Create⇨Animator Controllerをクリックして作成します。
今回名前はMoveとしますが好きな名前で構いません。
作成したAnimator Controllerをダブルクリックすると
次の様な画面になります。
次に①の何もない所で右クリックを押して、①のCreate Stateを選択。
②のEmptyをクリック。
①の様に四角いボックスが現れます。名前を変えたいので、
②の部分をIdleに変更してください。
Inspector内にあるMotionの③の◉をクリックして
Idleで続いている3番目のIdleを選択してエンターキーを押してください。
コレで止まった状態の時のアニメーションが設定されます。
同じ様な手順で①にWolkを作って、Motionには上から3番目のRunをつけます。
②はJumpと作りますがMotionがインポートしたアセットには無いので色々と理由があって最後に追加します。
③にAttackと作り、Motionは同じく上から3番目のAttack1を追加してください。
次に、①のParametersをクリックして、②の+をクリックし、
Triggerを選択して名前を②のAttackにします。
次に、同じ手順でFloatを選択して名前を③のWolkにします。
最後に、またTriggerを選択して名前を④のJumpにします。
※この部分の名前は後でアニメーションを動かすスクリプトに
影響してくるので間違えない様にしてください。
今度は①のIdleをマウスの右クリックを押して、
Make Transitionをクリックすると②の矢印が表示されるので
③のWolkまで持っていき、クリックしてください。
上記の画像の様に、Wolkを右クリック⇨Make Transition
Idleでクリックして返ってくる矢印など同じ様に作ってください。
今度は、①のIdleからWolkに伸びる矢印をクリックしてください。
Inspector内にある②のHas Exit Timeのチェックボックスをクリックして
空白にしてください。
アニメーションの動作が終わるまで、
次のアニメーショには変わりません。
例えば、止まってる時のアニメーション、歩いている時のアニメーションは、
roopしてずっと再生している設定に基本的になっているのですが、
Has Exit Timeを使用していると動作が終わらないので
アニメーションは変わりません。
そんな状態でもチェックを外す事で別のアニメーションに変えれますよって事ですたい。
次に③の+を押して④にWolkを選択、⑤は間違えて付けたので気にせずに、
⑥にGreaterとLessがあるのですが、Greaterを選択。
⑦に0.1と記入してください。
続いて、同じ様な手順でWolk⇨IdleはHas Exit Timeのチェックボックスを外して、
+⇨Wolk⇨Less⇨0.1と記入。
WolkからJumpはHas Exit Timeのチェックを外して、+⇨Jumpを選択。
IdleからJumpはHas Exit Timeのチェックを外して、Jumpを選択。
JumpからIdleはそのままで、Has Exit Timeにチェックを入れたまま、ありのまま。
IdleからAttackはHas Exit Timeのチェックを外して、Attackを選択。
AttackからIdleはそのまま、ありのままでお願いします。
前に設定を伸ばしていたJumpのモーションなのですが、
アセットをダウンロードして追加します。
こんな形でアセットからアニメーションをインポートして
好きなアニメーションをつけて頂けたらと思います。
エディタ上にあるWindow⇨Assets Storeで開いて、
検索窓よりHuge FBX Mocap Library part1と入力して
ダウンロードとインポートをしてください。
アニメーションの量がとても多いのでダウンロードと
インポートに時間がかかると思います。
そんな時は必要なものだけインポート!!
①のNoneをクリックして全てのチェックボックスを外します。
そして②の90_08.fbxにチェックを入れてインポートすると一瞬です。
申し訳ないことに普通のジャンプじゃつまらないと思って
変化球入ったアニメーションになってます。
先程の手順を踏んでJampのMotionにこの90_08を選択してください。
④のKnightをクリックしてInspector内にある
①に先程作ったAnimator ControllerのMoveを
ドラッグ&ドロップするか、選択してください。
②のCharacter ControllerをInspector内の一番下にある
Add Componentから追加してください。
追加の方法がよく分からない方は下記記事を参考にしてください。
phoenix9056.hatenablog.com
画像に表示されている数字と同じ様にしてください。
慣れている人は自分なりに設定してもいいのですが、
小さすぎたり、大きすぎたりするとキャラクターのアニメーションも
おかしくなるわでてんわやんわになります。
次に③のActionという名前でProject内のAssetの所で
右クリック⇨Create⇨C#Scriptで作成してください。
次のコードをコピー&ペーストするか、自分で記述して覚えてください。
上手くいかない時はコピペしましょう!
僕は間違いに気づかずコピペを結局した時ありました笑笑
※スクリプトの作り方が分からない方は下記記事を参考にしてください。
phoenix9056.hatenablog.com
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Action : MonoBehaviour { //CharacterController型を変数characterControllerで宣言します。 private CharacterController characterController; //Animator型を変数animatorで宣言します。 private Animator animator; //Inspctorで変える事のできるpublicでスピードを宣言します。 public float wolkSpeed; //Vector3型を変数velocityで宣言します。 private Vector3 velocity; void Start() { //GetComponentで変数にCharacterControllerを取得するよ。 characterController = GetComponent<CharacterController>(); //以下同文 animator = GetComponent<Animator>(); } void Update() { //もしcharacterControllerがisGroundedな場合 if (characterController.isGrounded) { //元々UnityにInputされている前後左右のプログラムを使うよ。 velocity = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical")); //重力が0.1。 if (velocity.magnitude > 0.1f) { //アニメーターのWolkを使って動きます。 animator.SetFloat("Wolk", velocity.magnitude); transform.LookAt(transform.position + velocity); } else { //もし歩いてなければスピード0でIdleに戻るよ。 animator.SetFloat("Wolk", 0f); } //もしマウスの左クリックをされたらアニメーションのTriggerで設定したAttackを実行するよ。 if (Input.GetMouseButtonDown(0)) { animator.SetTrigger("Attack"); } //もしUnityのInputにある スペース= Jumpが押されたら //アニメーターのJumpを実行します。 if (Input.GetButtonDown("Jump")) { animator.SetTrigger("Jump"); } } } }
作ったスクリプト③のActionを
ドラッグして④のKnightにドロップ(アタッチ)してください。
Inspectorからスピードを好きな数字で変えてください。
さあ疲れましたよね!成功の時です!!
再生してみましょう!
上手くいかなかった場合お問い合わせから連絡をお願いします。
僕にもスペルミスや間違いはもちろんあります。
参考にもなるので是非!
ちなみにgif動画で。
移動。
攻撃。
ジャンプ。
まあ最後は落ちてしまってチーンですねw
※キャラクターがカメラを追いかける方法はこちらから
phoenix9056.hatenablog.com
※Unityを学習していきたい方は下記カテゴリを。
phoenix9056.hatenablog.com
※初心者編はこちら。
phoenix9056.hatenablog.com
※Assetなどのオススメエラー解消はこちらら。
phoenix9056.hatenablog.com