見出し画像

【第3回】歩行モード・ブーストモード実装

ブループリント書くよりnote書く時間の方が長い。僕です。
今回は移動制御まわり、歩行状態とブースト点火状態を実装します。

「歩行モード」と「ブーストモード」について

実装したい機能について解説を挟んでおきます。

「歩行モード」とは、その通り脚(あるいは車輪など)で歩く状態です。
速度は出ないものの機体制動がしやすく、入力に対して即応性が高い。

「ブーストモード」はブースターによる加速力を得た滑走状態です。
最高速に達するまでにやや時間があり、慣性が働くため機体制動が少し難しくなります。

歩行モード - 後退を遅くする

歩行モード中は後退の速度が遅いという設定にしたい。
ので、その処理をしましょう。

画像1

前後の入力があった時に処理を挟みました。最初の〔Branch〕は無視して構いません。
入力は0未満~-1.0で後退なので、まずその判定を取ります。
〔Is Moving on Ground〕ノードはキャラクターが地上に居る場合に True を返します。
後退している かつ(AND) 地上に居るならば、一時的にキャラクターの移動速度を後退時のものに書き換えています。
前方向に入力があるか、前後への入力が無い場合に元の速度に戻します。

画像3

ちょっと分かりにくいですが、腕の振り方に注目。

歩行モード・ブーストモードの切り替え

ボタンを一回押すとブーストモード、もう一回押すと歩行モード、その繰り返しを行います。この実装は簡単。

画像2

これには〔Flip Flop〕ノードを使います。次に接続されたノードを交互に実行するもの。

次に接続されているのはカスタムイベントを呼び出すノード。
〔Boost OFF〕ノードに入っているもう一方のラインは〔Begin Play〕に繋がっていて、ゲーム開始直後はブーストオフ、つまり歩行モードになるようにしています。

そして続くのは各モード時のパラメーターをセットするノード群。

画像4

ここで書き換える設定は全て同じ。
特筆すべき設定を列挙します。

〔Max Acceleration〕は加速度。ブーストモード中は「BoostLag」というパラメーターから算出した変数を使用します。計算式には重量とブースター出力を使ってますが、まだ調整が必要そうなので、今は非公開という事で……。
歩行時はに10000というバカみたいな数字が入ってますが、これは入力に対してキビキビ動かすためです。エンジンの仕様で移動に〔Add Movement Input〕を使うと加速度計算をするので、バカげた数値にしておいて一瞬で最高速に達するようにしています。たぶん〔Max Walk Speed〕の2倍くらいで良いと思う。

〔Braking Deceleration Walking〕は移動中に入力を止めた時の減速度。これは後の〔Ground Friction〕(対地摩擦)との兼ね合いで作用の度合いが変わるみたい。要調整。

〔Air Control〕は空中での移動制御。0で全く制御が利かなくなり、1で地上と同じくらい制御できるようになる。ジャンプ開始時点の制御にも影響する様で、0だとどれだけ突っ走ってても垂直ジャンプになる。要調整。

〔Ground Friction〕は上の通り対地摩擦。歩行・ブースト双方で変数の値を入れていますが、今のところはまだ様子見で固定値。歩行時は8.0(エンジンの推奨値らしい)、ブースト中は0.2。

と。こんな設定だとどういう動きをするかがこちら。

画像5

ぬるっと滑り出して、かなり慣性の利いた動きになりました。
実際のゲームプレイでこの挙動がどれくらい影響するかは未知数ですが、だいぶ思惑通りです。理想としては歩行モードとブーストモードを切り替えることで緩急の付いた動きになれば良いなと思います。

おわりに

今回は地上での各モードの動作を作りました。
次回はブーストモード中に滑空させ、そして(できれば)ブーストを噴かせて上昇する動作を実装したいと思います。

この記事が気に入ったらサポートをしてみませんか?