Shiftキーを押したまま移動すれば、スピードアップする仕組みをつくってみましょう。
スピードを上げたうえで、走るアニメーションもつけていきます。
この内容は、下記ページの続きとして制作しています。
前進と停止のアニメーション
キャラクターをジャンプさせる
ジャンプのアニメーション
Runステートを作成
アニメーターウィンドウ > パラメータ > +マーク
Boolを作成し、Runningという名前にしました。
ステートをつくりましょう。
画面上で右クリック > ステートの作成 > 空
Runという名前にしました。
インスペクターに、Motionという項目があります。
走りのアニメーションを選択しましょう。
Idleのステートを右クリックして、遷移を作成。
矢印を、Runまで伸ばします。
矢印を選択して、インスペクターを設定します。
アイドリング状態から走るアニメーションということで、RunningをTrueに。
逆に、Runステートから遷移をIdleへ向けます。
走りからアイドルへ戻るので、Runningはfalseに。
WalkとRunの間も、まったく同じように遷移をつくりましょう。
デフォルトの設定では、アニメーションに入るのに、少しだけ間(0.25秒)があったりします。
遷移間隔を0にすれば、すぐにアニメーションが始まります。
AND条件で2つのキー入力
さて今回のテーマである、Shiftキーを押しながら操作できるように、スクリプトをつくりましょう。
前回の続き、WalkingMove.csに追記します。
「Shiftキーを押しながら」の箇所には、コメントを入れています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class WalkingMove : MonoBehaviour { [SerializeField] Animator anim; private Rigidbody rb; public float upForce = 200f; private bool isGround; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { if(Input.GetKey("up")) //上キーが押されたとき前へ歩く { transform.position += transform.forward * 0.01f; anim.SetBool ( "Walking", true ); } else { anim.SetBool ( "Walking", false ); } if (Input.GetKey("left shift") && Input.GetKey("up")) //Shiftキーかつ上キーが押されている間 { transform.position += transform.forward * 0.03f; //スピードアップ anim.SetBool ( "Running", true ); //走るアニメーションをつける } if (Input.GetKeyUp("left shift")) //Shiftキーを離したとき { anim.SetBool ( "Running", false ); //走るアニメーションをやめる } if(Input.GetKey("right")) { transform.Rotate(0,1,0); } if(Input.GetKey("left")) { transform.Rotate(0,-1,0); } if (isGround == true) { if(Input.GetKeyDown("space")) { anim.SetBool ( "Jumping", true ); isGround = false; rb.AddForce(new Vector3(0, upForce, 0)); } } } void OnCollisionEnter(Collision other) { if (other.gameObject.tag == "Ground") { isGround = true; anim.SetBool ( "Jumping", false ); } } } |
プレイして、動きを確認します。
Shiftを押しながら前進するパターン、前進している最中にShiftを押すパターン、2通りを試しましょう。
アイドリング状態からの走る、歩いている状態から走るの2パターンです。
シフトを押しながらのキー操作では、AND条件(かつ)を使います。
AND条件は&&で表記します。
関連記事:
前進と停止のアニメーション
キャラクターをジャンプさせる
ジャンプのアニメーション
シフトキーでジャンプの高さを2倍にする
アニメーションの間隔を変える
オブジェクトを使ったアニメーション作成
画像データを使ってアニメーション作成