Developer

【初心者Unity】スペースキーを押したらジャンプする2Dアニメーション
2021.07.31
Lv1

【初心者Unity】スペースキーを押したらジャンプする2Dアニメーション

1.はじめに


前回はAnimatorControllerの使い方について簡単な例で解説しました。
今回はより実践的な例として、ユニティちゃん 2Dデータを使用したスプライトアニメーションの切り替えについて解説していきたいと思います。

目標:

2.設定


※作成するプロジェクトは2Dです!注意!!

■ユニティちゃん 2Dデータ のインポート

公式サイトから『UnityChan2D.unitypackage』をダウンロードします。
作成した2Dプロジェクトを開いた状態で上記ファイルを実行すると、インポート画面が開きます。
今回はSpritesのみインポートしましょう。

■オブジェクトの作成

インポートが完了すると、Assetsフォルダ内にUnityChan2Dというフォルダが作成されるかと思います。
その中のSpritesフォルダを展開してみると、UnityChan.pngというファイルがあります。
再生ボタンを押すと何枚かの画像ファイルが展開されますので、その中からベースとなる画像を選びます。
特にこだわりが無ければ、 UnityChan_footwork_0 を選びましょう。
Hierarchyビューにドラッグ&ドロップすると、画像ファイルと同じ名前のオブジェクトが作成されます。
名前は UnityChan 等に変更しておきましょう。

■歩くアニメーションの作成

プロジェクトビューで右クリックして、Create > Animation でファイルを作成します。
名前は Run にしておきましょう。
作成が完了したら、UnityChan にドラッグ&ドロップします。
Animationビューで以下の通りに設定します。

Sprite ⇒ Unity Chan_run_0 ~ Unity Chan_run_7 を順番に0:08ずつ配置

InspectorビューでLoop Timeにチェックを入れます。

■ジャンプするアニメーションの作成

Animationビュー左上のドロップダウンからCreate New Clipを選択し、ファイルを作成します。
名前は Jump にしておきましょう。
Animationビューで以下の通りに設定します。

Position.y ⇒ 0:17で2.5に設定
Sprite ⇒ 0:00 UnityChan_jump_up_0 → 0:06 UnityChan_jump_up_1 → 0:13 UnityChan_jump_top_0 → 0:21 UnityChan_jump_top_1 → 0:28 UnityChan_jump_down_0 → 0:34 UnityChan_jump_down_1

こちらはLoop Timeにチェックを入れません。

■AnimatorControllerの設定

Window→Animation→AnimatorでAnimatorビューを開きます。
Run を右クリックしてMake Transitionを選択し、Jump をクリックします。
Run → Jumpの矢印が作成されます。
同様に、Jump を右クリックしてMake Transitionを選択し、Run をクリックしてください。
Jump → Run の矢印が作成されます。

次に、Parametersタブを開き、+マーク → Triggerを選択します。
名前は jump_trigger にしましょう。

Run → Jump
Run → Jump を結ぶ矢印を選択します。
InspectorビューのConditionsの+マークをクリックします。
jump_trigger という項目が追加されます。
Has Exit Timeのチェックを外し、Transition Duration を 0 に設定します。

Jump → Run
Jump → Run を結ぶ矢印を選択します。
Transition Duration を 0 に設定します。
その他はデフォルトの設定のままですが、Has Exit Timeのチェックが付いていることを確認しましょう。

今回の遷移条件は以下の通りになります。

jump_trigger の発火はスクリプトで行います。

■スクリプトの設定

Cubeオブジェクトに以下のスクリプトを適用します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class UnityChan : MonoBehaviour
{
    Animator animator;

    void Start()
    {
        // animatorコンポーネントを取得
        animator = GetComponent<Animator>();
    }

    void Update()
    {
        // もしSpaceキーが押されたならば、
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // "jump_trigger"という名前のTriggerを起動
            animator.SetTrigger("jump_trigger");
        }
    }
}

以上で設定は完了です。実際にゲームを動かしてみましょう。
最初に示した通り動きましたか?

3.おわりに


AnimatorControllerを使用した実践的な例について解説しました。
アニメーションの遷移の設定に関しては多くの機能があり、ここでは説明しきれませんでしたが、それらを使いこなすことによってより複雑な動作を実現することができます。

詳細に学びたい方はこちらを是非ご参照ください。
【初心者Unity】アニメーションの遷移を検証①【遷移条件】
【初心者Unity】アニメーションの遷移を検証②【ブレンド】
【初心者Unity】アニメーションの遷移を検証③【遷移の割り込み】

 

連載目次リンク

「初心者のための」Unityゲーム制作 目次
 

Unity実践編 - 目次リンク

実践Unityゲームプログラミング 連載目次