【Unity】2Dアクションゲームの作り方【アニメーション制御】
どうも、だらはです。
前回はアニメーションの作成方法について見てきましたが、今回はアニメーションの制御方法です。
本稿では、キー入力に連動してアニメーションを制御できるようにしていきます。
アニメーション制御方法
アニメーションを制御する方法の実装手順は以下の通りです。
- Animatorで状態遷移を定義する。
- キー入力設定を行う。
- キー入力用スクリプトを作成し、ゲームオブジェクトにアタッチする。
以上です。では順に見ていきます。
①Animatorで状態遷移を定義する。
具体的な手順は以下の通りです。
- [Window -> Animation -> Animator]よりAnimatorウィンドウを表示。
- Base Layer内を[右クリック ->Create State -> Empty]で状態を2つ作成し、[Player_Stand], [Player_Run]と命名。
- 各状態を[右クリック -> Make Transition]し状態間を結線。
- Parametersタブの+からBool変数[State_Run]を定義。
- 状態間の矢印を[左クリック -> Inspector -> Conditions]に[State_Run], [true/false]を定義。
- ゲームオブジェクトにAnimatorとPlayerCtrl(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]に切り替わります。
ディスカッション
コメント一覧
まだ、コメントがありません