前回の内容はこちら
https://pasteldrops.com/2019/03/04/post-720/
前回、パラパラ漫画で動くキャラクターを作ったので今回は、それをキーボード操作で動かしていきます。
と、その前に前回と同じ方法で、静止状態のアニメーションも作ります。
静止画でもいいんですが、やっぱり味気ないと言うかリズミカルに動いてたいですよね。
ということで、静止状態を作成しました。
この静止アニメーションや走っているアニメーションをどのタイミングで実行させるかまずは定義しましょう。
シーンタブにアニメーターがあると思うのでがあるのでそれを開いてみましょう。
この画面ではまず静止状態がメイン状態になっています。
ここに走っている状態のアニメーションを追加していきます。
まずはシーン上を右クリックして Create State > Empty から状態オブジェクトを作っていきます。
これにダッシュのモーションを設定してあげます。ついでにわかりやすいように名前も変えてあげましょう。
今回は、静止した状態からボタンを押すと走り出し、ボタンを離すと静止するゲームを作りたいので、
静止モーション → ダッシュモーションを接続していきます。
静止モーションを右クリックして、MakeTransitionで線をつないでいきます。
同様にダッシュモーション → 静止モーション も設定して完成です。
次にパラメータ設定です。
どのような状態でモーションが遷移するか指定します。
パラメータはFloat Int Bool Trriger の4パターンがありますが、
今回、矢印ボタンを押したらダッシュをし、離したらダッシュを辞めるの2パターンなので、Boolを選択します。
その後、静止モーション → ダッシュモーション の状態に設定していきます。
パラメータdashがtrueになった時ダッシュするように指定しています。
更に、押したらすぐに走ってほしいですよね。ラグとかいらないんで
Transition Duration を0にします。
逆矢印も同様に
パラメータdashがfalseになった時静止するように指定しています。
これでプログラムを書く準備ができました。
今できたアニメーションコントローラをScene上のキャラクターにセットします。ついでに動かせるようにRigidBody2Dと当たり判定Colliderもつけてあげましょう。
最後にプログラムを書いていきましょう。
右矢印と左矢印を押下した時、
・DashがTrueになる(Dashモーションが発火する)
・押した方向に動く
・棒人間を回転させ進行方向を向く
離した時
・DashがFalseになる(Idleモーションが発火する)
を書いていきます。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MainCharactorController : MonoBehaviour { private float CharactorSpeed = 3.0f; private Rigidbody2D rb; private Animator animator; // Start is called before the first frame update void Start() { rb = this.GetComponent(); animator = this.GetComponent(); } // Update is called once per frame void Update() { if (Input.GetKey(KeyCode.RightArrow)) { animator.SetBool("Dash", true); this.transform.eulerAngles = new Vector3(0, 180, 0); this.transform.Translate(-CharactorSpeed * Time.deltaTime, 0, 0); } else if (Input.GetKey(KeyCode.LeftArrow)) { animator.SetBool("Dash", true); this.transform.eulerAngles = new Vector3(0, 0, 0); this.transform.Translate(-CharactorSpeed * Time.deltaTime, 0, 0); } else if (Input.GetKeyUp(KeyCode.RightArrow) || Input.GetKeyUp(KeyCode.LeftArrow)) { animator.SetBool("Dash", false); } } }
あとは落ちないように地面を作ってあげて…
完成です。
これで最低限の動きは出来ます。次はジャンプですかねー?
続き
https://pasteldrops.com/2019/03/10/post-753/
コメント