UE4

【UE4】FirstPersonテンプレートで連射をする方法

補足

本記事は過去(2015-03-03)にブロマガで書いた記事の移植です。

はじめに



 本日からUE4の無料化がされましたね。いやぁすごい。

僕がUE4を使い始めたのは去年の秋のCEDECが終わった辺りなんですけれども、

サブスクリプション申し込んだ次の週くらいに学生は無料になって、

気がついてみれば本日に至るわけでして。



 というわけで僕はしがないただの大学生ですが、そんな奴が書いた記事でも需要も出てきそうなので、

備忘録的な感じでUE4について書いていこうと思います。

(なお本人は三日坊主なので(ry))

プロジェクトの準備


まずはテンプレートでFirstPersonを選びます。







はい、最初の画面です。



ではまず準備をします。

編集>プロジェクトの設定>エンジン>入力を選択します。







ここのAxisMappingsの横にある「+」をクリックして







図のように追加します。

ちなみにこのAction/Axis Mappingsなんですが、

キー等を押したか離されたかのみを返す/キーやその他デバイスを押した際の状況を変数でも返すの違いです。

ここで追加した項目は後で使います。

Blueprintの編集




次はBluePrintの編集です。

Content>FirstPersonBP>Blueprints>FirstPersonCharacterを開きます。







テンプレートって素晴らしい・・・

今回いじるのは一番下のSpawnProjectileです。







イベント開始部分のInputActionFireを・・・







先ほど追加したInputAxisContinuityFireに変えます。

右クリックして「ContinuityFire」と打てばで出てきます。







それを図のように不等号とブランチを追加・配置します。

ここのContinuityFireから出てるAxisValueなんですが、

今回の場合は押していない間は0.0、押してる間は1.0を返します。

元あったFireと違って押してる間は常にイベントが発生します。



この状態でちょっと実行してみましょう!

注意:爆音がなります







あわわわわ!なんだか凄いことに・・・

それもそのはずマウスを押している間は常にイベントが発生しますので、

初期設定だと秒間120発弾を発射しちゃいます。



ではこれをフラグを使って制御してみましょう。







Bool型のCanShotという変数を追加します。







デフォルト値をTrueにしておきます。







ここに・・・







図のようにブランチとGetCanShotを追加します。



このままだとずっとTrueなので結局さっきのような状況になってしまいますので、







フラグをFalseにしてあげます。



さてこれで実行してみましょう。







いくら長く押そうが連打しようが最初の一発しか出ません。

このままだとCanShotが一回Falseになったら永遠にTrueにされる機会がありませんからね・・・



ということで節度を守ってCanShotをTrueにしていこうと思います。

方法はいたって簡単です。







図のように最後にDelayとSetCanShotをTrueにするノードを設置するだけです。

こうすることによって、CanShotがDelayのDurationの値の秒数たつまでTrueになりません。

よって最初のような秒間120発出ることなく適度に連射されます。

ここのDurationの値を変更することによって発射間隔を変えることができます。

おわりに


現在サークルの制作物をUE4で作っているわけなんですが、

それに使っていたものを今回記事にいたしました。

今後もこんなかんじに書けたらなーと思ってたり。