公開日:2025/05/27  更新日:2025/05/27

UE5の弾を撃つ方法について

UE5でのゲーム制作では操作キャラや敵が弾を撃つ動作を行う必要があることが多い。やり方を紹介していく。

銃の持ち方

ブレンドスペース

エイムオフセット

視点変更

Get・SetやSequenceやBranchといった基礎的なノードがわからない場合は先に以下記事を確認してほしい。

アンリアルエンジンのノードの一覧

UE5の弾を撃つ方法の目次

Niagaraシステムで弾丸Niagara作成
弾丸ブループリント
弾を撃つ処理
目次にもどる

Niagaraシステムで弾丸Niagara作成

まず、Niagaraシステムを使って弾丸エフェクトを作成していく。

コンテンツドロワー直下にNiagaraフォルダを作成する。

Niagaraフォルダ内で右クリックし、FX→Niagaraシステムのように選択する。

UE5で弾を撃つ

どんなNiagaraシステムを作成するか選択肢(テンプレート)が表示される。今回はDynamicBeam(ビームや光を飛ばすエフェクト)を選択する。

UE5で弾を撃つ

Niagaraシステムが作成されるので、今回は名前をbulletにしてダブルクリックして開く。

UE5で弾を撃つ

DynamicBeamノードのColorを選択し、右の詳細タブを確認してほしい。

UE5で弾を撃つ

Colorの項目を今回は赤10、青0.3、緑2に変更し、オレンジっぽい光にする。保存して閉じる。

目次にもどる

弾丸ブループリントの作成

弾用のブループリントクラスを作っていく

任意のフォルダで右クリックしてブループリント→ブループリントクラスを選択する。

UE5で弾を撃つ

アクターを選択する。

UE5で弾を撃つ

ブループリント名をBP_bulletとする。ダブルクリックし開く。

コンポーネントタブで「追加」を選択し、Niagara Particle System Componentのコンポーネントを追加する。

UE5で弾を撃つ

Niagaraのコンポーネントを選択し、詳細タブのNiagara System Assetで先ほど制作したbulletを指定する。

UE5で弾を撃つ
UE5で弾を撃つ

コンポーネントタブで「追加」を選択しProjectileMovement(弾やビームといった物を飛ばすのに役立つ)を追加する(日本語だと投射物移動コンポーネントと表示されているかも)。

UE5で弾を撃つ

ProjectileMovementを選択して詳細タブを見てほしい。

プロジェクタイルのInitial Speedで初期弾速の設定が可能。

UE5で弾を撃つ

シミュレーションを選択すると、どのような速さで動くのか見られるので、自分の好きな数値に設定すればいい。

今回は値を3500とした。

プロジェクタイルのProjectile Gravity Scaleを0にする。

UE5で弾を撃つ

これは重力の設定。今回は重力をかけず真っ直ぐ弾を撃つようにしたいので0にする。

目次にもどる

弾を撃つ処理

インプットアクションファイルを作る。名前をIA_shootingとする。

UE5で弾を撃つ

IA_shootingを開き、「Value Type」をDigital(bool)にする(トリガーされているかがTrue・falseで出力)。Triggersの+マークを押す(NoneのままでOK)。

UE5で弾を撃つ

Enhanced Inputについて、よくわからない場合は以下の記事を確認してほしい。

キー入力のイベントの作り方

デフォルトでThirdPerson→inputのフォルダにあるIMC_Defaultを開く。

先ほど作成したIA_shootingを追加し、マウスの左ボタンでアクションが起こるように設定し保存。

UE5で弾を撃つ

以前の記事で作成したBP_Playerを開き、右クリック→「IA_」程度まで検索するとIA_shootingが出てくるので出す。

UE5で弾を撃つ

右クリックし検索しSpawnActorClassを出し、Classの入力ノードをBP_bulletにする。ここで一旦別の作業に移る。

UE5で弾を撃つ

銃の持ち方でキャラに銃を持たせたが、その際に使用した銃のスタティックメッシュアセットにソケット(スタティックメッシュにとりつけられる)をつけていく。

ソケットはメッシュの特定の位置から何かアクションをさせたい場合に使える。例えばソケットを取りつけ、その位置から弾を飛ばすことができる。

まず、プレイヤーのWEAPONコンポーネント(以前の記事で作成したスタティックメッシュ)を選択する。

UE5で弾を撃つ

詳細画面をみてスタティックメッシュの以下のマークを選択すれば、使用されているスタティックメッシュのファイルまで飛べる。

UE5で弾を撃つ

そのファイルをダブルクリックして開き、ソケットマネージャータブを選択し、+マークを選択してソケットを追加する。ソケットの名前はMuzzleにする。

UE5で弾を撃つ

ソケットの位置や向きを調整する。以下のようにソケットを銃口まで移動させ、赤矢印(X軸・前方)、緑矢印(Y軸・右)軸、青矢印(Z軸・上)が正しくなるように向きを調整しよう。

UE5で弾を撃つ

コンポーネントタブからWeaponをドラッグ&ドロップしてワイヤーを伸ばし、Get Socket Transformを出す。

入力のin Socket Nameからワイヤーを伸ばしPromote to Variableする。変数名はMuzzleとしコンパイルする。

変数Muzzleを選択し、詳細タブのデフォルト値をMuzzleとする。

以下のようにIA_shootingとSpawnActorClassとGet Socket Transformを以下のようにつなげる。

UE5で弾を撃つ

これでWeaponのMuzzleのトランスフォームを取得し、その位置・向きにBP_bulletを出現させ、飛ばすことができる。

以上で弾を撃つ処理は完了。撃った弾を消すために、DelayとDestroy Actorを出し以下のようにつなげる。

UE5で弾を撃つ

DelayのDurationの値を0.5にしているので、実行ピンにつながっているDestroy Actor(その名の通りアクターの破壊)の処理は0.5秒後に行われる。

SpawnActorClassのReturn Valueからオブジェクト(弾丸アクター)を参照できるので、それをDestroy ActorのTarget入力ピンにつなぐのを忘れずに

再生してマウス左ボタンを押すと以下のように弾を撃つことができる。


この方式にした場合の問題点は弾速が速い(この動画の場合はInitial Speedが3500)場合に以下のように銃身の先(ソケット配置位置)と弾が表示される地点が離れてしまうことだ。恐らく弾をスポーンさせてからNiagaraが表示されるまでのわずかな間に弾が動いてしまうのだろう。

UE5で弾を撃つ

もっと弾速が遅い攻撃であれば銃身から弾が出るようにちゃんと見えるので問題ない。

弾速が速い場合には、Initial Speedを0にしてスポーンさせた後に1フレームのディレイを入れて改めてスピードを設定するようにすればOKだ。

Delayノードで0.0とすれば1フレームのディレイが可能。

UE5で弾を撃つ

アンリアルエンジンの基本まとめへ戻る

page top