前回の内容はこちら
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/

コメント