【Unity】最強のゲームクリエイターに俺はなる | コンボ実装!
どーもーーーー「MEG2」を観てたらめっちゃ笑えて楽しかったFORM_07ですよぉぉい
もう題名「ステイサム2」でいいやん( ^o^)
前回↓はアニメーションとステートを連携させて攻撃の土台を作りましたね!
【Unity】最強のゲームクリエイターに俺はなる | アニメーション終了を検知して攻撃させよう - FORM_07’s blog
今回はそれを使ってあれしていきます!
とその前に、、、、
スケジュールを組んでおこう。
このままのペースだといつになっても完成しない気がしてきたゾ。。。
できた。
とりあえずここまででいいや。
いつ完成するか目処を立てるというよりは、その日することをなんとなく決めておくことが目的だからね。
あんまりがちがちに予定立てて行動するの苦手だからこんなもんでいいでしょ。
適当じゃん・・・(゚▽゚*)
さーーーーーーてスプライト作るぞーーーーーーい
モーションをドットで書くとか慣れなさすぎて時間対成果がおわってる。
・・・・・・・・・・・・・
はい、結局何も進まず一日がたちました
・・・・・・・・(゚◇゚)
スケジュールたてた意味。。。
い、一応日曜日に調整日を入れてるから多少のずれはいいってことでね。
がんばって2つ作った。
1個目が残心(フォロースルー)状態、2個目が2撃目の攻撃です。
最低限これだけ用意できればコンボの実装ができるので、早速やっていきましょう。
(先に全部作ったりしちゃうと後々変更とか作り直しが大変だからね)
まずはAnimator Controlerをいいかんじに組む。
Attack(攻撃)アニメーションが終了したらFollowTrough(残心)アニメーションへ遷移させて、さらに残心中に攻撃入力があれば次の攻撃アニメーションに遷移するようにしてます。
攻撃入力があったかどうかは、以前↓作ったパラメータをそのまま使ってます。
【Unity】最強のゲームクリエイターに俺はなる | アニメーション終了を検知して攻撃させよう - FORM_07’s blog
残心中に攻撃入力がなければ、Attack_end(攻撃終了)アニメーションへ遷移させて、それが終わったらDefault(標準)アニメーションに戻してます。
こんな流れでどんどん繋げてけばコンボが実装できるってわけだ!
そしてここで間違いに気づく。。。
前回↓アニメーション終了を検知したつもりでいたけど、この方法じゃ無理だった。
【Unity】最強のゲームクリエイターに俺はなる | アニメーション終了を検知して攻撃させよう - FORM_07’s blog
いや!前回は正常に動作してたんだよ!?でも!勘違いしててさ!!
勘違いというか、浅はかだった。
アニメーションが遷移する中で、GetCurrentAnimatorStateInfoで取得したアニメーションのnormalizedTimeが1以上になるわけなかった。。。
だってアニメーションが終わった(normalizedTimeが1になった)瞬間、次のアニメーションが始まる(normalizedTimeが0に戻る)んだもん。
迂闊だった。
前回正しく動いたように見えた理由は、Defaultアニメーションがループしてるから。
ってことで修正。
やってることは簡単で、現在再生中のアニメーションの名前を取得してそれに応じてステートを遷移させてるだけです。
修正できたけど、、、なーーーーーんか美しくないなぁ。。。
・・・・・・まぁ動けばいいか
ってことで実行!
わかりづらいですが、攻撃モーションの後に残心モーションが入って、その間に攻撃入力をしたので2撃目が発動してます。
ちなみにだけど、わざわざ1回の攻撃に、攻撃、残心、攻撃終了の3つのステートを用意してるかというと、だいたいの人が攻撃ボタンを連打するからです。
つまり攻撃ステート中は攻撃入力を受け付けず、残心ステート中に受け付けるってかんじで攻撃が連発するのを防いでいます。
攻撃終了ステート中に攻撃が入力されたら、コンボは1から始まるかんじ。
よーーーーし今回はここまで!
本当は全攻撃のスプライトをつくってサフィアちゃんの攻撃を一通り完成させるつもりだったけど、時間足んねぇや!
一日短すぎ
でもいつでもコンボの続きを実装できる状態にできたのはでかいですね!
次回からは敵に手をつけていきたい。。。