前回に引き続きUE4でアーマードコアVのハイブーストもどきが出来たので、その作り方メモ。
ちなみに前回も触れていましたが、今回のBPは下記の注意点があります。
・ 「Third Person Template」 を使用
・下記のところにチェックを入れている

以上がされていないと同じようなBPを組んでも位置の基準の違いなどで別の挙動になる恐れがあります。
未来の、組んだBP忘れちゃってるだろう自分よ、要注意だぞ!そのための備忘録なんだから……
という訳でこんな動きになるという動画。
まずはBPの全体像


DoOnceとDelayを利用しハイブーストを吹かす時間とリロードの時間を作る。ブーストを吹かしている時間分、キャラクターをコントローラースティック方向に加速させるtickが流れる、という流れになっています。
①ハイブーストを吹かす時間(加速を与える時間)とリロード時間

まずDoOnceにtickが流れることでボタンを連打してもtickが流れないようにする。
そして最初に流れるtickでGateをOpenさせ加速処理にEventTickを流す。
Delayで指定した時間後にGateのCloseにtickが流れ、加速処理に流れているEventTickをせき止める。=これがキャラクターを加速させる時間(ハイブーストを吹かす時間)となる。
またさらにDelayで指定した時間後にDoOnceのRsetにtickを流すことによって再びボタンの受付ができるようになる。=これがハイブーストのリロードタイムとなる。
ここら辺は説明読むより画像見てもらった方が分かりやすいかもですね。
②キャラクターをコントローラーのスティック方向に加速させる
まずはコントローラーのスティック方向を取得する。

これは「Third Person Template」の「MobementInput」に画像のBPを追加することで取得する。
参考:BluePrintで左スティックキャラ前方(or後方or右方or左方)なのかどうか取得する方法
あとはスティックの方向に変数を掛けて加速させるだけ。

なお、スティックがニュートラル(値が0の時)はキャラクター(のカプセルを軸とした)の前方向に変数を掛けて前方にハイブーストする仕様になってます。
ちなみにこの処理をしない場合、ニュートラルでハイブーストボタンを押すと0×変数となるためキャラクターの速度が完全に0になりその場でビタッと停止してしまいます。それはそれで面白そうではあるけれど、今回は使用予定はありません。
こっからは余談
またスティックの方向に「×」ではなく「+」を使用すると、X,Y座標軸で考えれば当たり前なんですが、下記のような結果になりキャラが斜めに吹っ飛んでいきます。
仮にスティックを左下に倒したときx=-1、y=-1とする。また変数を+300とすると
スティック方向×変数=(-1、-1)×300=(-300、-300)
→左下に300の速度が与えられる・・・〇
スティック方向+変数=(-1、-1)+300=(299、299)
→右上に299の速度が与えられる・・・×
という感じ。
考えてみれば当たり前なんですけど、最初この考えに至らず+を使ってしまいキャラが斜めに吹っ飛んでしまったのでメモ。
……こんなのに引っかかるの自分だけだろうけど、備忘録だからいいのです!
とりあえず以上でハイブーストもどき完成。
本家はハイブースト発動までに若干チャージがあってその時のボタンの押し込み具合で若干ハイブーストの強さが変わったりと変態的な仕様になってますが、少なくともそこまで作るつもりはありません。フロムは変態すぎる……。
クイックターンも作ろうかと思いましたが、考えてるゲームの仕様的に不要な気がしてきたのでとりあえず今後はブーストドライブ(壁蹴り)とグライドブースト(空中でも使用できるように考えてます)に挑戦予定。
……また高い壁になりそうだなぁ、これ。
次回「ACの動きを目指す―壁蹴りorグライドブースト編―」
来月更新は多分無理!!