UE5でFPSゲーム制作 Part12-銃を作る③
銃弾とダメージ判定
銃でダメージを与える方法は実際に弾をActorで作って飛ばす方法と、レイキャストを使って視線の先に敵がいるかを判定する方法の2種類が大まかな方法になると思います。
Actorで弾をつくる方法は弾道や弾速などがリアルに出来ますが、弾アクターの大量生成の負荷がかかるため、オブジェクトプールなどのシステムを作っておかないと重くなってしまいます。
レイキャストはアクターの生成はないものの、基本的に直線、即着なのでややリアルさが損なわれてしまいます。どちらも長所、短所があると思います。
今回はレイキャストを利用したダメージ判定を作ります。
敵にダメージを与えるにはApply Damageという関数を使います。
BP_WeaponBase
BP_WeaponBaseに新しくAs Player Characterという変数を作ります。型はPlayer Characterです。FPSなのでキャラクターのカメラの向きと視線上の位置を取得します。
Line Trace by ChannelのOut HitからBreak Hit Resultでレイキャストの先にあるものを取得できます。
Distance:Hitしたものの距離
Hit Actor:HitしたActor
Hit Bone Name:Hitしたボーンの名前
Apply DamageのBase Damageが敵に与えるダメージになります。設定したFire Rangeよりも遠い場合威力減衰が入る仕様です。
ただ、現状だとこの銃の所持者であるAs Player Characterが設定されてないので仮としてBeginPlayからキャストしておきます。
これで敵に銃でダメージが与えられるようになりました。これで持った銃から敵にダメージを与えるまでの一連の処理が出来上がりました。