Unityでゲーム、アプリ開発

Unityで初めてゲームやアプリを作る人のための支援ブログです。

Unity 3連続コンボ攻撃アニメーションで設定する方法。3Dゲーム作り④

今回は、3連続コンボ攻撃がアニメーションを使って
使えるようにする方法を紹介していきます。

※動画での説明が好きな方は下記動画を参考にしてください。
youtu.be
ブログ記事が好きな方はそのまま読み進めてください。

今日もみなさんこんばんは!
ゆうきやんです。

僕毎日自分でつけた名前をブログで
書くたびにネーミングセンスなさすぎるわ。
って落ち込んでます!笑笑

病んでます笑笑

どうでもいい話は置いといて
本題に入っていきましょう!


3連続攻撃アニメーションで設定する方法。

f:id:Phoenix9056:20200407095918j:plain

今回の記事ですが簡単に説明していきたいので、
アニメーションで3連続攻撃をしてIdle(止まっているアニメーション)
の状態に遷移する形
で作っています。
と言うのも全て繋げる方法を画像で紹介しても
分かりづらいと思ったからです。

移動やジャンプなどのアニメーションは
繋いでいない
ので、参考にして
攻撃を3連続でできるように実装してみてください。

※移動やジャンプ、ローリングのアニメーションを作成したい人は
下記記事を参考にして連続攻撃ができるように追加してみてください。

www.unityprogram.info


f:id:Phoenix9056:20200412105836p:plain

①の自分で用意したキャラクターにInspector内の一番下にある
Add Componentから②Character Controllerと、
③Animatorを追加してください。
Character Controllerの値はキャラクターに上手く
覆いかぶせる形で設定してください。



次に、Project内の自分が分かりやすい所で、
右クリック⇨Create⇨④Animator Controllerを選択して
作成します。
今回名前はLocomotionとします。

④のLocomotionをクリックするとAnimator画面が開かれます。
最終的に⑤のような形で作っていきます。
※Animatorの作り方が分か理づらい人は上記にある記事を参考に。


f:id:Phoenix9056:20200412113027p:plain
Animator画面で右クリックをして、Create State⇨Emptyをクリックすると
⑤の画面のように黄色いボックスが表示されます。
f:id:Phoenix9056:20200412113445p:plain
Inspectorから名前をIdleに変更してMotionに自分が好きなアニメーションを設定します。

f:id:Phoenix9056:20200412113656p:plain
同じように、右クリック⇨Create State⇨EmptyからAttack1,Attack2,Attack3
⑤のように配置していきます。

f:id:Phoenix9056:20200412114027p:plain
今度は矢印を繋いでいきます。
Idleの上で右クリック⇨Make Transitionをクリックすると、
矢印が伸びていくので⑤の画像のようにそれぞれから
矢印を繋いで行ってください。

f:id:Phoenix9056:20200412114229p:plain
次に、⑥のParametersをクリックしてParameters画面に変更します。
Parameters内にあるクリック⇨Boolを選択して
名前をAttackにして⑦のように作ってください。

f:id:Phoenix9056:20200412114859p:plain
Make Transitionで繋いだ矢印をクリックしてInspector内での変更をしていきます。
それぞれの矢印の設定内容を書いていきます。

⇨Inspector内の設定内容①IdleからAttack1は、Has Exit Timeのチェックボックスを外して、+をクリックしてAttackを追加してtrueにします。
②Attack1⇨IdleはHas Exit Timeのチェックを入れたまま、Attack,falseにします。
③Attack1⇨Attack2はチェックを入れたまま、Attack,true。
④Attack2⇨Idleはチェックを入れたまま、Attack,false。
⑤Attack2⇨Attack3はチェックを入れたまま、Attack,true。
⑥Attack3⇨Idleはチェックを入れたまま、Attack,false。

同じような手順で繋いでいけばいくらでもコンボや
アニメーションを繋いでいくことが出来ます。


f:id:Phoenix9056:20200412120208p:plain

Project内の好きな所で右クリック⇨Create⇨C#Scriptを選択して
スクリプトの作成をしていきます。
名前をAttackComboにしましょう。

次のコードをコピー&ペーストするか同じような記述にしてください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//アニメーションのStateを管理できるStateMachinBehaviourを使うよ!
public class AttackCombo: StateMachineBehaviour
{

    //始めの状態はAttackをfalseにして使えないようにします。
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        animator.SetBool("Attack", false);
    }
    //もしマウスの左クリックが押されたらAttackをtrueにしてアニメーションを使えるようにするよ!
    override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        if (Input.GetMouseButtonDown(0))


        {
            animator.SetBool("Attack", true);
        }
    }
    //それ以外の状態ではAttackのアニメーションはfalseにします。
    override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        animator.SetBool("Attack", false);
    }

}

次にAnimator画面の②のAttack1をクリックして、
Inspector内にある③のAdd Behaviourをクリック。
④のAttackComboスクリプトを追加してください。

⑤と⑥のAttack2Attack3にも同じように追加していきましょう。


f:id:Phoenix9056:20200412124341p:plain

次にProject内の好きな所で右クリック⇨Create⇨C# Scriptを選択して
スクリプトを作成していきます。
名前をLocomotionにします。

今回記述するのは、アニメーションを動かす事と右クリックで
攻撃アニメーションを出来るようにするコードだけ書いてあります。

次のコードをコピー&ペーストするか同じような記述にしてください。

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

public class Locomotion : MonoBehaviour
{
    //Animatoe型を変数animで宣言します。
    private Animator anim;
  

    void Start()
    {
        //GetComponentでAnimatorを取得して変数animで参照します。
        anim = GetComponent<Animator>();
    }

    void Update()
    {
        //もしInputされている0(マウスの左クリック)が押された時の処理。
        if (Input.GetMouseButtonDown(0))
        {
            //Boolで設定したAttackをtrueにして再生します。
            anim.SetBool("Attack", true);
        }
        
    }
}


完成したら②のキャラクターに①のスクリプト
ドラッグ&ドロップしてアタッチしてください。

それでは再生してみましょう!

f:id:Phoenix9056:20200412130416g:plain

結構タイミングよく押すか連打しないとIdle状態に戻ってしまいます。
そんな感じもゲーム感があっていいですね!!

ご視聴ありがとうございました!

※3Dゲーム作りに関する記事は下記カテゴリを参考にしてください。
www.unityprogram.info

※Unity学習していきたい色んなテクを知りたい方は下記カテゴリをご覧ください。
www.unityprogram.info

※初心者様が最初につまづきそうな所や簡単な記事のカテゴリは下記より。
www.unityprogram.info

※オススメのアセットの紹介のカテゴリは下記を参考にしてください。
www.unityprogram.info