UE4でシューティングゲームやシューターゲーム(FPSやTPS)を作る際に便利なコンポーネントにProjectileコンポーネントと呼ばれるものがあります。
Projectileはその名前の通り"発射されるもの"という意味で、自身が持つ向きを方向ベクトルとして、生まれた瞬間に設定された速度で飛び出していくというものです。
わかりやすい例として、"First Person Template"を作成した時に"My Projectile"というブループリントがありますので、これを開いてみて参考にしてみましょう。
一番大事なのは初速と重力
My Projectileを開いた状態で、コンポーネント一覧の一番上にある"Projectile"コンポーネントを選択しておいてください。
このコンポーネントを選択した状態で、詳細パネルの"Projectile"の中にある、"Initial Speed"と"Projectile Gravity Scale"を見つけます。
これらはその名の通りですが、初速スピードと影響する重力の具合です。
Initial Speedは当然あげるだけでスピードが上がります。Gravity Scaleは下げると重力の影響を受けなくなります。横一直線に飛んでほしい場合には重力は0にしてしまいましょう。
Max Speedは上限が必要な場合には設定する必要があります。なぜならばProjectileは基本的に上限なくスピードが加速していくからです。これらの設定だけしていればもう使うのは簡単です。
実際に飛ばしたい時
使い方はとても簡単です。
SpawnActorでProjectileコンポーネントを作成するだけです。
この時の引数、"Spawn Transform"は位置と向きとスケールを決めています。ここで決めた向きにアタッチして、Projectileは飛んでいきます。
Spawnしてしまった後はもう自由です。何もすることはありません。
あとは初速と重力に応じて勢いよく飛んでいくだけです。
バウンス設定で跳ね返り
ProjectileはBouncesという設定をすることにより、壁に当たった時などのバウンス設定をすることもできます。
"Should Bounce"のチェックボックスを入れておけば、それだけでもう跳ね返りの設定ができます。"Bounciness"や"Friction"といった値を調節すれば跳ね返り具合も簡単に調整できてしまいます。
やり方次第では跳弾といった表現も可能となるかもしれません。
シューティングゲームでもお手軽に使える
2D系のシューティングゲームを作りたい場合でもProjectileは簡単に使うことができます。基本的に横一直線に飛ぶ場合には重力設定が必要ありません。
オーバーラップが取りたい場合にはオーバーラップ用のシェイプコンポーネントを作ります。これでオーバーラップした時には独自のイベント判定によりダメージを与えるなどといったことが可能となります。
Projectileには実はホーミング機能もあったりしますが、これはまた別のコンポーネントが必要となるので、ここでは解説しないでおきます。