【Unity入門】プレイヤーにジャンプアニメーションを追加する

こんにちは、カバゴトです!今回の記事では、前回の記事にジャンプアニメーションを付け加えたのでその方法を紹介していきたいと思います!

上の記事が前回の記事なので、良かったら参考にしてみてください!

目次

ジャンプアニメーションの追加

前回と同じように、Mixamoを活用させてもらいました。

検索ボックスで、「jump」を検索し、好きなジャンプモーションをダウンロードします。

ドラッグ&ドロップで先ほどダウンロードした「Jump」をプロジェクトビューに入れます。

アニメーションの設定

アニメーションの設定を解説していくのですが、前回の記事と被る内容が多いので、所々省略しながらの説明となります。

下の解説ではあまりうまくいかない方や、方法が分からない方は下の記事を参考にしてみてください。

Animatorのstateを上のように設定します。前回の記事ですでに「walking」と「standing」を作っていると思うので、前回と同じ手順で作成していきます。まずは、左下の「Parameters」に「jump」を追加します。

左下にあるアニメーターをドラッグ&ドロップで移動させました。(移動させなくてもいいです)プロジェクトビューのjumpimgの三角形のアイコンを選択し、上のアニメーター画面にドラッグ&ドロップします。

Stateを右クリックし、「Make Transition」を選択します。

矢印が上のように設定したら、右側の「Conditions」を上のように設定します。「walk」と「jump」、「true」と「false」を間違えないようにしましょう。

スクリプトの作成

Assets」→「Create」→「C#Script」をクリックし、スクリプトを作ります。コードは下のようになります。

using UnityEngine;

public class Controller : MonoBehaviour
{
    private Animator animator;
    private bool isJumping = false;
    public float rotationAngle = 90.0f; // 回転する角度

    void Start()
    {
        animator = GetComponent<Animator>();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.W))
        {
            RotateAndAnimate(0f);
        }
        else if (Input.GetKeyDown(KeyCode.A))
        {
            RotateAndAnimate(-rotationAngle);
        }
        else if (Input.GetKeyDown(KeyCode.S))
        {
            RotateAndAnimate(-180f);
        }
        else if (Input.GetKeyDown(KeyCode.D))
        {
            RotateAndAnimate(rotationAngle);
        }
        else if (Input.GetKeyDown(KeyCode.Space) && !isJumping)
        {
            Jump();
        }

        // wasdキーが離された瞬間に歩行アニメーションを停止する
        if ((!Input.GetKey(KeyCode.W) && !Input.GetKey(KeyCode.A) && !Input.GetKey(KeyCode.S) && !Input.GetKey(KeyCode.D)))
        {
            animator.SetBool("walk", false);
        }

        // ジャンプアニメーションが終了したらjumpパラメータをfalseにする
        if (isJumping && !animator.GetCurrentAnimatorStateInfo(0).IsName("Jump")) // Jumpアニメーションが再生中でない場合
        {
            isJumping = false;
            
        }
    }

    void RotateAndAnimate(float angle)
    {
        transform.rotation = Quaternion.Euler(0f, angle, 0f); // y軸を指定された角度に回転させる
        animator.SetBool("walk", true); // 歩行アニメーションを開始
    }

    void Jump()
    {
        
        isJumping = true;
        animator.SetTrigger("jump"); // ジャンプアニメーションを再生
    }
}

これで完成です!

アニメーションが遅いなどの不具合がある方は、Animatorの矢印の「Has Exit Time」のチェックを外してみてください。

実際に動かしてみる!

動きました!移動スピードやアニメーションのスピードは、Animatorのstateをクリックすると「Speed」があるのでそこを編集すると設定できます。

終わりに

最後まで読んでくださりありがとうございます!今回は、プレイヤーにジャンプアニメーションを追加する方法について解説しました。もし、うまくいない場合や意見等あればコメントの方をよろしくお願いします!

この記事が参考になれば幸いです。また、次回のブログでお会いしましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次