|
執筆バージョン: Unreal Engine 5.7.1
|
関連記事
[UE5]チャージショットで弾のバリエーションを増やそう!
[UE5]【続】弾のバリエーションを増やそう!~速射編~
◆はじめに
こんにちは、エンジニアの山中です。
定番化しつつある弾シリーズですが、今回はカメラ方向に追従する弾を実装しようと思います。
現実世界の弾は放物線を描いて下降していくような軌道になりますが
ここはUnrealの世界なので、プレイヤー自身で弾の軌道を操作できてしまうんですね。

◆いざUE5へ
UE5.7を起動したらホームパネルが表示されるので、左上の「新規プロジェクト」を選択します。

見慣れた画面が表示されたら「ゲーム」→「一人称」→「バリアント:アリーナ シューター」の順で選択していき
プロジェクト名を設定して作成を押します。

プロジェクトが開いたらアリーナ シューター用のレベルを開きましょう。

プレイを押すと一人称のシューティングゲームが遊べます。
銃もバリエーションがありこのままでも十分楽しいですが
今回はこのレベルを使って新しい弾の挙動を実装していきます。
◆前準備
このテンプレートレベルには銃が3種類存在するので
そのうちの1つ、グレネードランチャーとして実装されている「BP_ShooterWeapon_GrenadeLauncher」を使用したいと思います。

発射される弾は「BP_ShooterProjectile_Grenade」になります。
追尾処理自体はこの弾の中に実装しようと思います。

挙動としては冒頭で書いたように「カメラ方向に追従する弾」となります。
カメラから一定距離離れた位置に向かって弾の進行方向を書き換えるような実装をしようと思います。
とりあえずプレイして現在の弾の挙動を確認してみましょう。
グレネードランチャーとしては非常に完成度が高い挙動ですが
今回実装したい追尾弾には適していない要素がいくつかあるので、まずはそれらを変更していきましょう。
具体的には下記の要素になります。
①集弾性
②リコイル(反動)
あっても良いがSF的な武器を想定している為、今回は不要。
③速度
プレイヤーが制御する都合上、もう少し遅くしたい。
④重力
カメラで制御したい為、今回は不要。
それぞれ下記の通り設定を変更していきます。
まずは武器側「BP_ShooterWeapon_GrenadeLauncher」の設定です。

続いて弾側「BP_ShooterProjectile_Grenade」の設定です。

また、速度を下げたことによって弾自体の有効時間を延ばす必要がある為
併せて下記も設定変更してください。(詳細タブの中で検索を掛けると出てきます)

設定を変更した結果、↓のような挙動になっていればOKです!
◆実装
「BP_ShooterProjectile_Grenade」のイベントグラフを開き、下記の通り実装します。
実装自体はそこまで複雑ではなく、コメントも記載している為、詳細は割愛させていただきますが
前述した「カメラから一定距離離れた位置に向かって弾の進行方向を書き換えるような実装」となっています。

変数「TargetDistance」は「5000.0」と入力してください。
プレイすると↓のような挙動になります。
それっぽくはなったのですが、ややカメラへの追尾が遅く感じます。
これは「TargetDistance」が遠すぎることによるものなのですが
かといって近すぎると、今度は弾がすぐに目的地に着いてしまい止まってしまいます。
いい感じにする為に、経過時間に応じて「TargetDistance」を延ばすようにしてみましょう。

赤枠の箇所が追加した処理になります。
変数にはそれぞれ「TargetDistanceMin : 500.0」「TargetDistanceMax : 2000.0」を設定してみてください。
これで、発射直後は5m先へ向かい、5秒後には20m先へ向かうようになりました。
プレイすると↓のような挙動になります。
きびきび動いて操作感が向上したのではないでしょうか!
壁越しの敵等にもアプローチできる面白い弾が実装できましたね。
◆さいごに
これでバッチリ!と思いきや、実はこの実装では問題点があります。
それは、弾を発射した後にプレイヤーが後ろに動くと弾が止まってしまうこと。
また、同時に複数の弾が発射できてしまうのも少し違和感がありますね。
ではどうすれば良いのか…
更なるクオリティアップを目指して、次週に続きます!