MENU

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

どもぉぉぉ~~~原神のフォンテーヌが楽しくてうれしいFORM_07ですよい。

 

水中とかえぐすんぎ。

 

 

さて、前回↓まででUI関連の作業は一端オワリということでしたね!

 

【Unity】最強のゲームクリエイターに俺はなる | キャラクター画面を作る! - FORM_07’s blog

 

 

今回からはサフィアちゃんを特訓させてアクションの種類を増やしていきたいと思います!

 

 

まだどうやって実装するかも、スプライトもなにもかも準備ができていない。。。

 

 

 

ま、手ぇ動かしてりゃなんとかなるのよ。

 

 

とりまStateをいい感じに増やしといた。

 

もっと増える予定

 

やっぱりPlayerの状態によって出せる攻撃を変えたいからね。

 

 

それに合わせて今までのコードをちょっと変える。

 

 

・・・・・・・・(。_。)カタカタ

 

 

変えた。

 

特筆するまでもない変更なのなので省略(State変更処理をいじっただけです)。

 

 

 

で、攻撃関数の処理をStateに応じて変えたいから、、、

 

 

これでいいのか

 

こうで、、、

 

 

一端ね

 

こう。

 

 

うーーーーん、これだと1撃目のあとにどれだけ時間がたっても次の攻撃が2撃目になっちゃうな。

 

 

 

うーんと。。。Update関数で1秒経過したらコンボが切れるようにして、、、

 

 

下の2行ね


それぞれの攻撃用関数で継続時間とコンボ判定をリセットすればオッケーかな?

 

 

 

 

うまくいったかな。

 

 

 

っていうかdeltaTimeの説明ってしたっけ。

 

簡単にいうと、前のフレームからの経過時間ね。

 

 

 

 

・・・・・・・・・・・・・・(゚◇゚)

 

 

 

まって?

 

 

な、なに・・・・

 

こんな書き方できるの?

 

PlayerInputコンポーネントから現在のInputActionsのマップを参照できるのは知ってたけど、、、

 

 

["アクション名"]って書けばそのマップの中から指定したアクションを参照できる・・・・だと・・・・!?

 

 

Unityすげぇぇぇ・・

 

 

でもこれState駆動のシステムとか根本から変えないとな。。。(-_- )

 

がんばるか。

 

 

・・・・・・カタカタカタカタ( ^。^)

 

 

・・・・・・・・・カタカタカタカタカタカタ(・_・)

 

 

 

・・・・・・・・・・・・カタカタカタカタカタカタカタカタ(?_?)

 

 

 

ぐわぁぁぁぁぁぁああい

 

できたぞぉぉおおおいぃぃぃぃい

 

 

(^u^;)ハァハァゼェゼェ…

 

 

アップデート関数でステートを駆動させる仕組みにしました。

 

普通そうなのかも(?)

 

これを全部のステート作った。

 

さらに、システムが大きく変わったから、今までのコードも結構がっつり変えちゃってます。

 

 

いやーーー・・・・長かった。

 

慣れてない作業をするのってなんでこんなに時間掛かるんだ いや慣れてないからか。。。

 

 

ハハハ・・・

 

 

この大工事の恩恵として一番でかかったのは、ステート駆動を全部まとめて書けたことかな。

 

 

ゲームの動作自体は何も変わらないんだけどね、、、大事よ、、、大事。。。

 

 

 

あと、新たな発見。

 

 

Unityごいす

 

PlayerInput.currentActionMap[action].WasReleasedThisFrame()

 

これでActionが終了したかどうかを判定できる。

 

Unityホント便利。

 

 

 

さて、これはあくまで準備段階。

 

スプライトを用意しないとナ。。。

 

 

(;。;)

 

 

と、とりあえず今回はここまでにしよう。。。

 

 

次回からはスプライトも用意してちゃんと見た目に変化をつけていこう!

 

form-07.hatenablog.com