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からキャストしておきます。

 

これで敵に銃でダメージが与えられるようになりました。これで持った銃から敵にダメージを与えるまでの一連の処理が出来上がりました。