FPSゲームの作り方12 ゲームオーバー・攻撃エフェクト・溜め撃ちチャージショットの実装

Unity FPSゲームの作り方


Unity入門の森オリジナル本格ゲーム制作講座はこちら
8種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

今回の記事でUnity C#で開発してきたFPSゲームのPC版を完成させます。第12回で一旦の区切りですね。

前回は、ゲームスタートからクリアまでの流れを作成し、それに合わせたUIを表示しました。

前回の記事:

FPSゲームの作り方11 ゲーム進行管理の実装・HPステータスバーや被弾エフェクトの作成
この記事はFPSゲームの作り方講座の第11回目です。 前回は敵の自動生成機能を開発し、クリアするまで敵が出現し続けるようにしました。 前回の記事: 今はただ敵を倒しているだけなので、ゲーム性を出せるようにゲームクリア・クリア時...

今回はさらにゲームオーバーや、攻撃エフェクト、弓の溜め時間、チャージショットなどの追加機能を実装していきます。

その他ステージの調整をしてゲームを一旦完成の状態にしていきます。少し長くなりますが、なくても問題ない部分もあるので適宜必要な機能を実装してください。


【Line登録者限定のプレゼントもあるよ!】

FPSゲームのゲームオーバー処理の実装

まずはゲームオーバー処理を作成していきます。ここは必要な機能なので作成しておきましょう。

「AppGameController」に処理を追加

追加しているのは「GameOver()」関数です。

処理は前回追加した「GameClear()」関数と同じなので一緒に記載しておきます。「CurrentParam.State」を「End」にして、フィールド上の敵を全て破棄します。「currentFieldEnemies()」を初期化して、「ClearEvent」を実行します。
ログだけ変えています。同じなので、一つでもいいですが、今後別の処理を追加する際のために別関数にしておきます。 

「AppPlayerController」に処理を追加

まずは関数の追加「OnPlayerDead()」です。

これもクリア時とほぼ同じですが「clearText.text = $”GAME OVER \n{time}”」の部分、表示テキストだけ「GAMEOVER」にしておきましょう。 

そして、「OnEnemyAttackHit()」関数、つまり敵の攻撃を受けた時の処理に処理を追加して実行します。

関数の最後に「if( currentHp <= 0 )」現在のHPが0以下の場合に「gameController.GameOver()」と「OnPlayerDead()」を実行します。

ゲームオーバーとコンティニュー処理の動作確認

では確認してみましょう。「AppPlayerController」の最大HPを適当に減らしておいて、サクッとゲームオーバーにしてみましょう。 

やってることはクリア時と同じなので表示テキスト以外は同じです。

簡易的ですが、これでゲームオーバーも完成しました。

プレイヤーが攻撃ヒットした時のエフェクトを作る

次にプレイヤーの攻撃が敵にヒットした時のエフェクトを作成します。

ヒットエフェクトの作成

まずはHierarchyで右クリック「Effects/ParticleSystem」で新しくパーティクルを作成し、「HitParticle」という名前にしておきましょう。

最初の段階では、白い光の球が上に上がっていっていると思います。これを調整してエフェクトにしていきます。パーティクルシステムは設定項目がとても多く、なかなか全てを説明しきれませんので、今回初期状態から変更した項目、またよく使う項目を記載していきます。

諸々お好きなように変えても問題ありませんので下記を参考にInspectorで設定していきましょう。

パラメータ名 今回設定する値 解説
Duration 0.1 実行する時間の長さ
Looping false 繰り返し実行するフラグ
Start Lifetime 0.3 パーティクルの最初の生存期間
Start Size 0.4 開始サイズ
Start Rotation 0 開始角度
Start Color 黄色
Gravity Modifier 0 重力の値
Play On Awake true 開始時に実行するフラグ
Max Particles 1000 同時に存在できるパーティクルの最大数
・Emission   頻度とタイミング
Rate over Time 100 ユニットタイム毎に放出されるパーティクルの数
・Shape   形状
Shape Sphere 放出するボリュームの形状
Radius 0.2 球の半径(形状により項目がない場合もあります)
・Size over LifeTime   Lifetimeに応じてサイズを変更
Separate Axes false XYZそれぞれ別に設定する
Size グラフで設定 グラフに応じてサイズ変化。下記画像参照。

「Size over LifeTime」はInspector下のグラフで設定できます。

このグラフの形状は左下の歯車マークを押せばいろんな選択肢から選ぶことができます。

設定が完了すると、黄色い弾ける感じのエフェクトができるかと思います。

ここまでできたら、「Assets/AppMain/Prefab」に「HitParticle」をドラック&ドロップしてプレハブ化します。プレハブ化できたらHierarchyの「HitParticle」は消しておきましょう。

エフェクト生成処理の作成

では、処理を追加して、プレハブを作成します。追加するのは「Arrow.cs」です。

続きを読む

このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.stores.jp/)で講座閲覧権を取得してね。

ビルド設定の手順

最後に、ここまで、ビルドをせずに作成してきました。

特に変更していなければPC用に作成しているので一旦簡単にビルドしてみましょう。Unity上部のメニュー「File→BuildSetting」を開きます。

右の方にある「AddOpenScene」をクリックして、開いているシーンをビルドリストに入れます。このリストは「シーンファイル」をドラック&ドロップすることでも追加できます。

一覧の左のチェックマークが入っているところが、ビルドするシーンになり、右の番号「0」が最初に開かれるシーンになります。

Platformは変更していなければ「Pc, Mac & Linux Standalone」でPC用のビルドになります。

「PlayerSetting」で細かい設定ができますが、今は特に変更せずに任意のフォルダを選択し「Build & Run」をしましょう。「Build」の方はビルドだけして終わっても実行されずファイルの作成だけが行われます(下記はMacの画面です)。

できたら自動的に実行されるかと思います。PCの場合はEditorでの実行とさほど変わりはないかと思いますが、ちゃんと動くことだけ確認しておきましょう。

今回は以上となります。

ここまでで、一通りのゲーム作成が終了しました。

次回からはこのゲームをスマホで遊べるように対応させていきます。

次回の記事 : 

FPSゲームの作り方13 UIや移動スティックを開発 スマホ対応に改造しよう
本講座は3DFPSゲームをフルスクラッチで開発しています。今回の記事はその13回目です。  前回までで、PCで遊べる一人称視点のFPSゲームとして一通りの作成が完了しました。 前回の記事 :  今回はこのFPSゲームをスマホ対...


Unity入門の森オリジナル本格ゲーム制作講座はこちら
8種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

コメント

タイトルとURLをコピーしました