UnityでFPSをつくる その7-2 [ 銃の発射 ]

2020年6月23日

No.277

34行目から51行目ではレイがヒットしたオブジェクトのタグ毎に照準の色を変えています。
Enemyなら赤色、それ以外は白色にしています。

No.278

Color構造体で第1引数から順にRGBで色の加減を指定します。第4引数では透明度を指定します。
RGBは「0」でその色を加えない、「1」で最大限加えることを意味します。
Alphaは反対に「0」で最大限透明(見えない)、「1」で透明度無しを意味します。
数値で指定する以外に、あらかじめ色の名前で変数として確保されているので、それを呼び出す書き方もあります。

No.279

試しに「Color.red」を指定すると、数値を入力した時と同じ結果になりました。

No.280

Enemyに照準が合っている状態でマウスを左クリックした場合、EnemyHPスクリプトを取得してReceveDamage関数を呼び出しています。

No.281

引数には16行目で宣言したdamageScore変数を指定しているので、Enemyには「1」のダメージが与えられることになります。

No.282

EnemyHPスクリプトの方では8行目で指定したEnemyのHPを、22行目からのReceveDamage関数でdamageScoreの値だけ減少させています。

No.283
No.284

注意点としては「public」を付けないとPlaye側から参照できないので、忘れないようにしてください。

SightDisplayスクリプトの方に話を戻します。53~57行目ではレイ上にどのオブジェクトも存在していない場合の照準の色を指定しています。
四方をオブジェクトの壁に囲まれていればこの記述は不要ですが、現在のステージ構成では天井を付けていないので、上空を見上げた時にどのオブジェクトにもヒットしない場合がでてきます。

No.285

その場合でも、壁や床のオブジェクトにヒットした時と同様の色を照準に指定しています。
注意点としては、レイはオブジェクトを検知してるのではなくコライダーを検知しているという事です。
オブジェクトにコライダーが付いていなかったり、コライダーが小さかったりした場合は、レイがオブジェクトに当たっていても情報を取得できません。

No.286

以上で[ 銃の発射 ]の説明をおわります、おつかれさまでした!

FPS

Posted by kenji