MENU

【Unity】最強のゲームクリエイターに俺はなる | アニメーション終了を検知して攻撃させよう

ども~。「キングダム 運命の炎」がおもろくてうれしいFORM_07ですよい!

 

早く続きが観たいぎぎぎぎぎ。。。

 

 

 

前回↓はState駆動システムを実装し直しましたね!

 

【Unity】最強のゲームクリエイターに俺はなる | ステート駆動システムをUpdate関数で実装しよう! - FORM_07’s blog

 

今回はそれを使ってサフィアちゃんの攻撃の種類を増やしたい。

 

 

さぁぁてまずはスプライトを用意しないとな。。。

 

 

まず1つ。

 

エフェクトとかは後回し。

 

 

前と比べると早く完成できるようにはなったな。。。

 

 

これをUnityに取り込んで、、、Animator Controllerにいい感じに追加して、、、

 

 

この辺は結構慣れたゾ

 

(Animator Controllreの設定について詳しくはこちら↓から)

form-07.hatenablog.com

 

 

今回はアニメーション遷移にTrigger型のパラメータを使ってます。

 

 

booltriggerの違いだけど、クソ雑魚語彙力で説明すると、boolはレバー、triggerはボタンってかんじ。

 

boolはtrue (on) とfalse (of) の切り替えができて、triggerはできない。

 

逆に言うとtriggerは一度onにしたらすぐにoffになるから、boolみたいにわざわざ切り替える必要がない。

 

今やってる「攻撃」みたいな、1回きりのアニメーションにはtriggerが向いてて、しゃがみとかバッグを開く、みたいな状態を切り替える系のアニメーションにはboolが向いてるってこと。

 

 

 

さて説明も終わったところで、

 

 

攻撃関数でtriggeronにする。

 

 

 

 

 

あとは、、、ステート駆動システムを採用してるからそっちにも対応させないとな。

 

 

これ知らなかったんだけど、GetCurrentAnimatorStateInfo(レイヤー番号).normalizedTimeで今再生中のアニメーションの進捗を参照できるみたい。

 

 

normalizedTimeが0で再生前、0.5で半分再生済み、1で再生後。

 

 

すげぇこれ使えばアニメーションが終わった時点でステートを遷移させれるじゃん。

 

 

すごいぞUnity

 

ここで注意なのが、normalizedtime == 1じゃなくてnormalizedTime >= 1にすること。

 

Update関数で1フレームが実行された瞬間に一寸の狂いも無くちょうどアニメーションが終わることなんてないからね。

 

 

いいねぇ~~

 

よぉぉぉ~~し、いいかんじ!

 

 

今回はここまで!

 

 

学びのある日々はいいな、やはり。

 

次回からはコンボを実装していこうと思います!

 

form-07.hatenablog.com