FPSを作ってみよう11-装備武器の能力を設定するスクリプトの作成-

前回

FPSを作ってみよう10-キャラの視点の方向に銃口の先を向ける
FPSゲームでキャラクターが視点を上下した時に持っている銃も視点の先に向くようにしていきます。 視点の上下によってキャラクターの中身が見えてしまう対処もしていきます。

でキャラクターの視点の方向に銃口の先を向けるように出来ました。

今回は前回までの記事の修正(ゲーム性を上げる為の)と武器の違いによって攻撃力や射程距離を変更したいという事も出てくると思うので、武器に能力を設定するスクリプトを作成しておきます。

スポンサーリンク

前回までの銃を撃つ処理を修正していく

今回の記事を作成する前に以前の記事で作成した内容をいくつか修正したいと思います。

それは銃を撃った時の処理になります。

以前の処理だと銃を撃ってから次に銃を撃つまでには銃を撃つアニメーションが終了しないとキーを押しても銃は撃てません。

こういう仕様で作りたい人はそのままでいいんですが、キーを押したら必ず銃を撃つようにした方がゲーム性があがります。

そこでMyCharaスクリプト、Shotアニメーションパラメータの変更、Animatorの条件の変更、Behaviourの追加をします。

まずはShotアニメーションパラメータの変更とAnimatorの遷移条件の変更です。

AnimatorのParametersでShotをTriggerで作成していましたがそれを削除して、+を押しBoolのShotを作成します。

WaitShot→Shotの条件をShotがtrue
Shot→WaitShotの条件をShotがfalse

の時に変更します。

また、

Shot→WaitShotの条件のHas Exit Timeのチェックを外しておきます。
これで銃を撃つアニメーションの終了をまたずともすぐに銃が撃てるようになります。

次にMyCharaスクリプトの修正です。

animator.SetTrigger(“Shot”) → animator.SetBool(“Shot”, true)

と変更します。

このままだとShotがfalseになる事がないのでShotのインスペクタのAdd Behaviourをクリックし新しいビヘイビアEndShotを作成します。

resetTimeは銃を撃ってからShotをfalseにするまでの時間でインスペクタで設定出来るようにします。

nowTimeは経過時間を入れる変数です。

OnStateEnterはShotの状態に入ってきた時に実行する関数でnowTimeを初期化しています。

OnStateUpdateはShotの状態にいる間ずっと実行する関数で時間を計測しnowTimeがresetTimeを越えたらShotをfalseにしています。

Shot状態のインスペクタでEndShotのパラメータを設定

Shot状態を選択してインスペクタを表示し、EndShotのresetTimeに0.25を設定しました。

連続ショットのサンプル動画

↑の動画のように連続で銃を撃てるようになりました。

撃った後が早すぎるような気がしますが、見た目を取るかキーのレスポンスを取るかになってきます・・・・(-.-)

とりあえずこれで処理の修正が完了です。

銃の能力を設定するスクリプトWeaponStatusスクリプトの作成

銃にはそれぞれ攻撃力、射程距離、装填出来る弾の数を設定しておくスクリプトを設定しておきたいと思います。

今後、武器を切り替える機能を取りつけた場合に弾が敵に当たったかを銃に設定されているWeaponStatusの設定値を見て決めるようにしたいと思います。

現状ではハンドガンしか持ってないのでハンドガンの能力を考えパラメータを設定出来るようにします。

インスペクタで銃の能力を変更出来るようにする為publicで宣言しておきます。

本当はprivateで設定したいところですが、確認する時に便利なのでpublicにしています。

それぞれのパラメータは関数で取得出来るようにし、銃の能力を取得したい時は関数を介して値を取得し利用するようにします。

例えば銃を撃った時に敵との距離が銃の射程距離内であるかどうか?や

敵に弾が当たった時に銃の攻撃力を取得し敵に与えるダメージを計算する時に銃の能力のパラメータを返す関数を呼び出しその値を使うようにします。

これで銃の能力を設定するスクリプトが完成しました。

FPSを作ってみようカテゴリ記事の終了

さて突然ですが今回の記事を持ってFPSを作ってみようカテゴリの記事は終了となります。

今までありがとうございました。

 
 
 
 
 
 
 
 
 
 
 
 
 
と言ってみたかったりして・・・・(-.-)ボソッ

悪い冗談ですねまったく(`Д´) ムキー!

あまりにFPSカテゴリ記事のアクセスがない為にちょっと言ってみたかっただけです。
FPSカテゴリ記事にあてはまらず独自ドメイン以降の記事が軒並みなんですけどね(^_^;)

次回は銃を撃って敵に当たったかどうかの機能を作成するのでその時に今回のスクリプトを使用する事になります。

今回の記事はちょっとした休憩記事ですね・・・( ´△`)y-~~

今回のような修正は自分だけでゲーム作ってる場合は勝手に直せばいいんですが、ブログの記事で連続した内容を記述している場合は大変です・・・(^_^;)

前にずっとその内容で書いてきた記事も修正しなくてはならなくなりますからね。

しかし、今回の修正はあくまで銃を撃つ反応を早くするというカスタマイズなので前の記事は修正しません!

なんだかんだ(叫んだって♪)
言ってもただ面倒くさいだけですね・・・・(-_-)/~~~ピシー!ピシー!

久しぶりのFPSカテゴリの記事ですが、次回はいつになるやら・・・。
また、しばらくお待ちくださいm(__)m