【Unity】マリオのような2Dゲームを作る〜プレイヤー移動アニメーション編〜

【Unity】プレイヤー作成

前回はプレイヤーの動きを作りました。
前回の記事はこちら⇨【Unity】マリオのような2Dゲームを作る〜プレイヤー編②〜
今回は動きにアニメーションを加えたいと思います。

プレイヤーにアニメーション(動き)を加えよう

プレイヤーにアニメーションを加えるにはアニメーションを制御しなくてはなりません。
制御するとはどういうことかというと、前回キーボードの右を押したときに右に動きました。
つまりキーボードの右を押した時にプレイヤーが歩く、もしくは走るアニメーションにし、
そして右を離したら立ち止まるなど、簡単にいえば動きに合わせたアニメーションを作ることです。

アニメーションの作り方

アニメーションを作るにはまず1コマ1コマの画像が必要になります。
その画像の素材も先日アセットストアでインポートした中にありますのでそれを使います。

アセットストアからインポートする方法はこちらで紹介しています⇨【Unity】マリオのような2Dゲームをつくる〜ステージ編①〜

⏬アニメーションの作り方の動画

アニメーションを制御しよう

キーボードの右を押した時、左を押した時に先ほど作った走るアニメーションが起きるようにします。

アニメーションの制御方法

前回のスクリプトに書き足すことがあるのですが、その前に下準備が入りますので動画でまとめました⏬
※このブログではなぜそうなるかは敢えて解説は致しません。気になる方は調べてみてください。

スクリプトの書き足し

で引かれたところが今回追加されたスクリプトです。

public class PlayerController : MonoBehaviour
{
public float speed;
private Animator anim = null;
private Rigidbody2D rb = null;
// Start is called before the first frame update
void Start()
{
anim = GetComponent<Animator>();
rb = GetComponent<Rigidbody2D>();
}

// Update is called once per frame
void Update()
{
    float xSpeed = 0.0f;
    float horizotalKey = Input.GetAxis("Horizontal");

    if (horizotalKey > 0)
    {
        transform.localScale = new Vector3(1, 1, 1);
        anim.SetBool("run", true);
        xSpeed = speed;
    }
    else if (horizotalKey < 0)
    {
        transform.localScale = new Vector3(-1, 1, 1);
        anim.SetBool("run", true);
        xSpeed = -speed;
    }
    else
    {
        anim.SetBool("run", false);
        xSpeed = 0.0f;
    }
    rb.velocity = new Vector2(xSpeed, rb.velocity.y);
}

}

実際にアニメーションができているか見てみよう

いい感じに動きました!!

次回は敵を作って見ましょう!!
敵キャラ作成の記事はこちら⇨【Unity】マリオのような2Dゲームを作る〜敵キャラ作成編〜
プレイヤーの接地判定の記事はこちら⇨【Unity】マリオのような2Dゲームを作る〜接地判定編〜

コメント

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