【Unity】2Dアクションゲームの作り方【アニメーション制御】

2022年8月25日

どうも、だらはです。
前回はアニメーションの作成方法について見てきましたが、今回はアニメーションの制御方法です。
本稿では、キー入力に連動してアニメーションを制御できるようにしていきます。

スポンサーリンク

アニメーション制御方法

アニメーションを制御する方法の実装手順は以下の通りです。

  1. Animatorで状態遷移を定義する。
  2. キー入力設定を行う。
  3. キー入力用スクリプトを作成し、ゲームオブジェクトにアタッチする。

以上です。では順に見ていきます。

①Animatorで状態遷移を定義する。

具体的な手順は以下の通りです。

  1. [Window -> Animation -> Animator]よりAnimatorウィンドウを表示。
  2. Base Layer内を[右クリック ->Create State -> Empty]で状態を2つ作成し、[Player_Stand], [Player_Run]と命名。
  3. 各状態を[右クリック -> Make Transition]し状態間を結線。
  4. Parametersタブの+からBool変数[State_Run]を定義。
  5. 状態間の矢印を[左クリック -> Inspector -> Conditions][State_Run], [true/false]を定義。
  6. ゲームオブジェクトにAnimatorPlayerCtrl(Script)をアタッチ。

下図のように、Animatorの設定をしてみてください。
因みにですが、Player2DControllerは、前回作成した[Player_Stand.controller]を命名し直して作成したものです。
PlayerCtrl(Script)は後述します。

◆Animatorの状態定義

◆[Player_Stand -> Player_Run]への状態遷移

◆[Player_Stand -> Player_Run]への状態遷移

ここで、状態遷移のInspectorについて補足です。
項目の意味は以下の通りです。
2Dの状態遷移は、状態間を即時切り替えたいためHas Exit Timeのチェックを外しています。

  • Has Exit Time:チェックを外すと、アニメーションを待たずして次の状態に遷移させる。
  • Exit Time:Has Exit Timeをチェックした場合、アニメーションを遷移させる待ち時間。
  • Fixed Duration:状態遷移を秒単位で切り替えるか、%単位で切り替えるか選択。
  • Transmittion Duratior:状態の遷移時間。
  • Transmission Offset:遷移先状態が開始される時点のオフセット。

キー入力設定を行う。

[Edit -> Project Settings -> Input Manager]より、[Horizontal], [Vertical][Alt Negative Button], [Alt Positive Button]を見直す。

キー入力用スクリプトを作成し、ゲームオブジェクトにアタッチする。

以下のスクリプトを作成し、ゲームオブジェクトにアタッチします。

◆PlayerCtrl(Script)

using UnityEngine;

public class PlayerCtrl : MonoBehaviour
{
    private Animator anim = null;
    float InKeyX = 0;

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

    void Update()
    {
        InKeyX = Input.GetAxis("Horizontal");

        if (InKeyX > 0)
        {
            anim.SetBool("State_Run", true);
        }
        else if (InKeyX < 0)
        {
            anim.SetBool("State_Run", true);
        }
        else
        {
            anim.SetBool("State_Run", false);
        }
    }
}

以上です。
キー操作[S][F]を入力することでアニメーションが[Player_Stand]から[Player_Run]に切り替わります。

スポンサーリンク

基礎

Posted by daraha_gm