ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【ゼロからアンリアルエンジン5】〔アイテム編〕⑤武器チェンジと非表示を実装しよう!

目次

 

はじめに

 

前回の続きです。

namiton.hatenablog.jp

 

 

▼この記事でできること

 

解説

 

①アクションマッピングの追加

武器の切替と射撃モードの切り替えアクションを設定しましょう。

以前と同じようにファイル→プロジェクト設定のエンジンインプットを選択します。

 

アクションにFireModePrimaryWeaponSecondaryWeaponを追加しました。

ホイールでも変更できるよう軸マッピングWeaponChangeを追加します。

 

②武器チェンジシステムの実装(キー入力)

BP_FirstPersonCharacterのイベントグラフを開きます。

 

作成したアクションイベントを配置します。

 

現在装備している武器をキャッシュしたいので、Actor型の変数CurrentWeaponを作成します。

 

まずは切り替えられるかをマクロにします。

名前をCheckChangeWeaponにしました。

 

マクロの中はこのように組みます。

インプットアウトプットの引数はActor型です。


イベントグラフに戻りましょう。

Interactイベントの修正を行います。ActionPickからHiddenInGameに一部差し換えます。

 

切り替え時に弾が出るのを阻止するために非表示の場合は射撃できないように変更します。また外部から操作できるようにカスタムイベントStopFireとして作成します。


実際に武器を切り替える処理を記述していきましょう。

マクロChangeWeaponHiddenを作りました。

 

武器を切り替えるか、自身を切り替えるかで実行ピンを作成します。



 

切替時間分の遅延を行い表示を切り替えます。

 

イベントグラフに戻りマクロを配置します。

ChangeTimeを編集することで武器の装備時間を変更できます。

銃ごとに行いたい場合は構造体ST_GunInfoに追加して管理するといいでしょう。

 

これでキー入力による武器切替が完成しました。

実行してみましょう。

 

③武器チェンジシステムの実装(マウスホイール)

ホイールの条件は以下のノードで取得できます。


武器スロットが3つなどあった場合、ホイール下の場合0→1→2 ホイール上の場合は0→2→1 にする必要があるため、武器選択用のローテーションの仕組みを作ります。 

 

現在選択中の武器の番号をキャッシュするための変数CurrentWeaponNumberを作ります。

 

デフォルト値は0です。

 

剰余(あまり)を使って値を丸める方法がこちらです。

 

0~4の中で順番に呼ばれます。

 

アップとダウンで同様の処理を書くのでマクロ化してしまいましょう。

要素が存在するかチェックするマクロCheckElementIsVaildを作ります。

 

要素を追加して存在するか返します。


Delayノードで更新頻度を落とします。

 

マクロを使用して存在するかチェックします。



 

最後にチェンジイベントを呼び出します。

 

また、キー入力での変化を検知できるようにCurrentWeaponNumberをセットします。

 

マウスホイールで切替ができることを確認出来たらOKです。

 

 

④+α 武器をしまっているときは移動速度を早くしてみる

 

カスタムイベントSetMaxWalkSpeedを作成します。

 

滑らかに加減速してほしいのでタイムラインを作ります。

名前はWalkSpeedSmoothにしました。

 

ノードをダブルクリックして長さを0.5秒にしてフロートトラックを追加。

名前をAlphaにして0~1に遷移するようにしてキー補間を自動にします。

 

MaxWalkSpeedの変数を作成しLerpで補間します。

 

使ってみましょう。

CharacterMovementComponentの詳細からMaxWalkSpeedを800にします。

 

 

銃をもったら移動速度を600に下げます。

 

非表示=銃をしまっている状態では移動を800に戻します。

 

ホイール処理では非表示にはしないので武器チェンジの遅くする処理のみ呼びます。

 

完成です!銃を持つと移動が遅くなるのを確認しましょう。

また持ち替え時など専用のアニメーションを再生するとグッとクオリティーが上がるので挑戦してみましょう。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。