Unity研究所<Unityによるゲーム開発、映像開発>

Unity初心者40代後半中年中間管理職おやじが綴るゲームで小遣い稼ぎできるようになるまでのブログ

➃ゲームオーバー処理

今回はゲームオーバーに関する制御について説明する

 

本ゲームは、ゾンビにつかまらずに迷路内のアイテムをすべて取り切ればクリアというものだ

したがって、ゾンビにつかまったらゲームオーバーである

 

f:id:Harukichi:20190814173345p:plain

〇プレイヤーに関連する部品の追加 上の図参照

1 Playerの子オブジェクトとして、空のゲームオブジェクトを追加(上記はDamageAreaとしている)

2 これにさらにCapsule Colliderを追加

3 さらにスクリプトを追加(ここではDamage Effectとしている)

 

〇制御方法

スクリプト(Damage Effect)にて下記のような制御を行っている

f:id:Harukichi:20190814174037p:plain

ア 38~45行 OnTriggerEnter(Collider other)

 コライダー内に侵入したゲームオブジェクトが、Enemyのタグをもつゲームオブジェ クトかどうかを確認し、一致したら処理を行っている

 ということで、ゾンビのゲームオブジェクトにはすべてEnemyのタグを設定している(忘れると検知してくれない)

 ここで、Invoke関数を使用しているが、一定時間経過したのちに指定した関数を実行するものとなっており、1つ目のパラメータは呼び出す関数名、二つ目は実行までの待ち時間となっている

 つまりは、Damageという関数を1秒後に実行しろという処理を行っている

 

イ 24~36行 Update()

 こちらは毎フレーム行われるUpdate関数の中で、isDamageという変数を監視し、trueとなった場合に54行目からのDamageImageShowという関数を呼び出し、血の画 像の表示、サウンドの再生、ゲームオーバーの文字の表示を行っている

 

 

 なお、血の画像については、 UIのImageにCanvas Groupというコンポーネントを追加し、Alpaの値を最初をスクリプトで変化させて表示している

 最初は値を0としておき、ゾンビにつかまったタイミングで値を1に徐々に近づけていくことでフェードインするような感じで表示させている

FadeInTime += Time.deltaTime; 

 毎フレームごとに1フレームの時間を加算

BloodPic.alpha = FadeInTime / fadeDuration; 

 fadeDurationは0.2が設定されており、時間の経過ごとに値が上がり、画像が表示されていく

 

 〇今回のポイント

 1 Invoke関数 

  Invoke (string methodName, float time);  

  1つ目のパラメータは呼び出す関数名、二つ目は実行までの待ち時間

  何秒後に処理するなどという局面は結構あるので是非覚えておいてほしい

  他にもコルーチンというものがあるがまた別の機会に(あまり詳しくないので

  <m(__)m>)

 

 2 画像のフェードイン、フェードアウト表示

  UIのImageにCanvas Groupを追加し、Alpha値を変化させて表示

 f:id:Harukichi:20190814180520p:plain

 

今回はここまで