たっつんのロマンブログ

もつ鍋愛好家によるお役立ち情報を発信しているブログやで!

Unity初心者向け講座 ~アニメーションをアニメーターで管理しよう編~

 

スマートフォン・PCに対応したアフィリエイトのA8.net

こんばんは、もつです!

 

今回はAnimatorでAnimationを管理しようということで、この方法を使えばキャラクターの待機モーションや走るモーション、攻撃モーションなどのアニメーションを制御することが可能になります。

 

それではやっていきましょう!

 

まずは画面上部のウィンドウからAnimatorを開きましょう。

Window→Animation→Animator

 

するとこのような画面が出てきたと思います。

Animatorの画面

 

上記の画面を使いアニメーションを管理していきます。

(今回は前回のコインじゃなく、こうもりのキャラクターを使用します)

現状アニメーションが一つしかない(待機モーションしかない)ので、攻撃モーションを追加していきたいと思います。

 

それではまずAnimationウィンドウを開きましょう。そしてPreviewの下のBat_Idleの部分をクリックして、CreateNewClipをクリックして名前を決めましょう。今回はBat_Attackとします。

Bat_Idle→CreateNewClip→Bat_Attack

 

次に前回と同じようにSprite EditorでSliceしたアニメーション画像をドラッグ&ドロップで持ってくる。

 

 

motunabelove.hatenablog.com

 

 

ここでAnimatorウィンドウを開きます。そうすると下記の画面のようにさっき自分が決めた名前の灰色の四角がAnimationウィンドウに出てきます。そうなっていれば成功です。

オレンジの四角の下に灰色の四角

 

オレンジの四角が待機モーションのアニメーションで、灰色の四角が攻撃モーションです。今回は待機モーションから攻撃モーションに遷移したいと思います。

 

オレンジの四角を右クリックしてMake TransitionをクリックしたあとにBat_Attackをクリックします。そうするとBat_IdleからBat_Attackへの矢印が作成されたかと思います。

これがアニメーション遷移です。

Bat_Attackも右クリックしてMake TransitionでBat_Idleに矢印作成

 

しかしこのままでは何をしたときに待機から攻撃に遷移するのかわからない状態なので、どういったときに遷移をするのか決めていきます。

 

今回はJキーを押したときに攻撃モーションに遷移するようにしたいと思います。

Layerの横にあるParamaterをクリックして+のマークをクリックし、boolを選択して名前を決めます。(攻撃をするか?なのでIsAttack)

 

 

 

そして、先ほど作成した白い矢印をクリックし、Inspectorに表示されたConditionsの+をクリックします。

Inspectorの下のほうにConditionsがある

 

 

 

逆の矢印には同じように+をクリックした後に、trueの部分をfalseにしておきます。

これでAnimatorの部分は完成です。次はScriptに移っていきたいと思います。

 

まずはProjectでC#Scriptを作成します。Projectで右クリックしてCreate、C#Scriptクリック。

 

そして下記のようなC#Scriptを作成し、ダブルクリックしVisualStadioを起動します。

右側の緑のやつ

 

そして下記のように記述します。

 

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

public class Bat : MonoBehaviour
{
    Animator anim;
    bool IsAttack;

    // Start is called before the first frame update
    void Start()
    {
        anim = gameObject.GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        anim.SetBool("IsAttack", IsAttack);

        if(Input.GetKeyDown(KeyCode.J))
        {
            IsAttack = true;
        }

        if(Input.GetKeyUp(KeyCode.J))
        {
            IsAttack = false;
        }
    }
}

GetKeyDown = 押している間

GetKeyup = 離したとき



IsAttackの部分は先ほど自分で名前を決めた部分です。なので人によってはIsAttackではないです。

これでJキーを押している間は攻撃モーション。Jキーを離すと待機モーションに戻るという処理になります。

このスクリプトを設定するためにキャラクターの画像から適当な画像を一枚Hierarchyにドラッグ&ドロップで持ってきて、その画像にスクリプトをドラッグ&ドロップで持ってください。

 

最後に再生ボタンを押して確認してみましょう。

これにてAnimatorでAnimationを管理できるようになりました。

 

私自身こういったことを書くこと自体慣れていないので、至らない点があればコメントでおっしゃってください。

できる限り返したいと思います。

 

お疲れさまでした!