概要

こんにちは!Qitzの平田です!

前回に続いて、今回はUnity公式の2Dアクションチュートリアルを徹底的に丁寧に解説して行きます!

https://learn.unity.com/tutorial/character-controller?uv=2019.3&projectId=5ea809f0edbc2a00215f1fa5#5ea81ee4edbc2a00215f245c

Unity公式Boltのチュートリアル(英語)のキャラクターのジャンプ時アニメーションと何回もジャンプできてしまう部分を防止するところなどを進めて行きます。

CircleCastの結果を分析するUnitを追加する

CircleCastには出力ポートがあるので、そこからドラッグをしてExposeRayCastHit2Dを作成します。

Platformに接地しているかどうかの判定を行う

RayCast Hit 2DのColliderにNot Equalの判定処理を繋ぎます。

ここに比較要素としてNullのUnitを繋ぎます。

このGraphはつまり、RayCastHit2DのColliderがNullかどうかを判定するGraphになります。

接地判定を使い無限ジャンプを防ぐ

上記のように OnButtonInputの入力を受け取るところにBranchを追加します。

そしてそのBranchの判定に先ほどの接地判定結果を繋ぎ、結果がTrueの時(接地している)時のみ次のAddForceに遷移するようにします。

動作チェック

無事に1回だけジャンプできるようになりました。

接地判定GraphをMacro化して使い回せるようにする

あと、もう一箇所ジャンプ中にジャンプ表示用のスプライトを変更する処理があるのですが

同じくここでも接地判定を使いたいと思います。

今回同じGraphを使い回すことになるので、GraphをMacro化して使い回せるようにしたいと思います。

ProjectウィンドウのAssets配下で、右クリック -> Create -> Bolt -> FlowMacroを選択します。

名前はGroundCheckとします。

作成したGroundCheckのMacroへPlayerControllerの接地判定Graphを範囲選択コピーして

ペーストで持ってきます。

Macroの出力ポートを作る

FrowGraphの何もないところで右クリック

outputと入力してOutputのUnitを作成します。

作成したOutputを選択しGraphInspectorのウィンドウのValueOutPutに追加を行って行きます。(値を出力するための設定)

OutPutのValueをこんな感じに設定してやります。

OutputのUnitにGrounded判定用の口ができるので、NotEqualの判定結果をつなげてやります。

これで、接地判定用のMacroの準備ができました!

作成したMacroを使ってみる

PlayerControllerのMacroを選択し、FrowGraphの空いているところへGroundCheckのMacroをドラッグアンドドロップしてやります。

すると、FlowGraph中にGroundCheckのUnit が作成されました。

ジャンプのアニメーションを再生させる

作成したGroundCheckのUnit口からAnimator SetBoolのUnitへ繋ぎ

対象の名前をGroundedとします。

Updateの流れに繋ぎたいので、緑矢印の口をAnimator Set Floatの緑矢印出口に繋ぎます。

この処理は何を行っているのか?

ここでは、Groundedの判定に応じてAnimator中のGroundedの判定を切り替えています。

PlayerにアタッチされているAnimatorを見てみると、Groundedの値がfalseになったタイミングでJumpのステートに遷移してJump用のアニメーションが再生されることがわかります。

動きを確認してみる

次回!

結構、説明回数が7回近くたまったのでここまでの解説をまとめて

2Dゲームを作ろう(上)として、残りの内容を2Dゲームを作ろう!(下)としてまたブログにまとめて行きたいと思います。