第5回「グライドブーストっぽいやつ(ボタンの押し込みでハイブースト→グライドブーストへ移行)編」

今回はグライドブーストっぽいやつの作り方メモ

なんで「っぽい」とつけているかというとタイトル通りACV本家と色々違う箇所があるためです

俺は面倒が嫌いなんだ(あんな変態技術作れるかボケ)

本家と同じというのもつまらない、というかそれだったらACVやれよってなってしまうのでここら辺から本格的に仕様を変えていこうかと思ってます

ではまずは下準備から

・スティック方向の取得を変数化

前回作ったスティック方向を取得するブループリントを画像のようにして変数化

これはよく使うので変数化しておかないと面倒です

というか変数化してないと次回の内容ができないので必ず変数化しておきましょう

・ハイブーストの加速処理を関数化

こちらも前回作った画像部分のブループリントを関数化してます。

別に必須ではないのだけれど結構この処理を使いまわす羽目になったため、作業の簡略化と画面をすっきりさせるために関数にしてます(純粋化はしないこと)

※必要なBPを選択しておいて右クリックで関数化するだけ。こんな操作忘れる可能性あるの自分だけだろうけど……

簡易版グライドブーストの作成

で、さっそくグライドブーストっぽいものを作成

これだけ

ね、簡単でしょう?

グライドブーストボタンを押すことでキャラクターの「Movement Mode」を「Walking」から「Flying」に切り替えることでキャラが落下しなくなります。(ついでにジャンプも空中にいると判定されて効かなくなる)

あとはEventTickが「Flying」中に「HighBoostAcceleator」(さっき作ったハイブーストの加速関数)に流れてハイブーストと同じ速度で移動できますよ、となります。

本家と違って今のままだと空中でもグライドブーストできてしまいますが、今回作ろうとしているゲームでは空中でも使えるようにしたいのでその処理はしません。

あと、これはボタンを押すとグライドブーストにモードを切り替えるような処理になってますが今回はハイブーストボタンを一定時間押し込み続けることでハイブースト→グライドブーストへ切り替わり、ボタンを放すとグライドブースト終了としたいのでその処理に挑戦

本家で言えばブーストチャージの代わりにグライドブーストへ移行するイメージですかね?

ボタン押し込みでハイブースト→グライドブーストへの切り替え

とりあえずBP全体像

①ハイブーストと同時にグライドブーストへEventTickを流すゲートをOpen

②ボタンを放すとグライドブーストへEventTickを流すゲートをClose

 同時に「Movement Mode」を「Flying」から「Walking」へ変更

③ あとはハイブーストのボタンを一定時間以上押し込まれているいるかを判定し、グライドブーストへEventTickを流す

という処理で出来てます。ここでのポイントはどうやってキーの押している時間を取得するかです

キーを押し込んでいる時間を取得する

ハイブーストのボタンを押す

→ハイブーストを吹かす時間+α以上ボタンが押し込まれているかどうか

→上記時間以上にボタンが押し込まれていたらグライドブーストへ移行

のような処理を下記を参照につくりました

参照:UE4、Inputの長押し処理の実装

そしてできたものがこちら

「Get Input Key Down」で任意のキーが押されている時間を取得し、それがハイブーストのリロード時間+αの時間より長いかどうかを判定

押してる時間が上記の時間より長ければグライドブーストの処理へEventTickが流れる仕組みとなっています

ハイブーストのリロード時間を取得する理由は、ハイブーストを吹かしている間はグライドブーストへ移行しないようにするためです

最終的にハイブーストを吹かす時間はロボのカスタマイズ時に変更できるようにする予定の為こうした処理にしてます

とりあえずこれでグライドブーストっぽいやつの完成(仮)

次回の壁蹴り編のオマケでグライドブーストにちょっと追加するものがあるので、良ければそちらも見てくださいな

という訳で次回は「壁蹴り編」です

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です