読者です 読者をやめる 読者になる 読者になる

第3回 Unityゲーム 開発記録 ゲームオーバーの実装

unity 自作ゲーム

f:id:moshi1121:20170306144202p:plain

Unityのロゴを利用できるようです。詳しくは下の記事を参照ください。日本語環境なら日本語で出てきます。

unity3d.com

 

今回はゲームオーバーを実装していきます。

 

ゲームオーバになる条件は、自機が破壊されたときですね。

OnTriggerEnterを使用して、障害物に接触したら自機を破壊するコードを加えました。

 

private void OnTriggerEnter (Collider other) {

is_dead = true; //死亡判定をオンに 

Destroy(this.gameObject);

}

 これで何か障害物に接触したら自機が破壊されるようになりました。

次に、自機が破壊されたらGameOverと表示させるようにします。

 

f:id:moshi1121:20170306145010p:plain

こちらがゲームオーバー画面。リトライとホームボタンも加えました。

Inspectorタブのチェックを外しておいて(非アクティブにする)、通常時は見えないようにしておきます。

GameObject.SetActive(true);で表示ができるのですが、対象のオブジェクトが非アクティブだと、オブジェクトの捜索をしても見つけてくれないみたいです。かくれんぼしているんですね。

なので、あらかじめどこに隠れているのか教えてあげます。

public GameObject gameover; //ゲームオーバー表示 

 これでInspector上でGameOverオブジェクトがどこにいるのか教えてあげます。かくれんぼだったら裏切り行為ですね。

 

最終的なOnTriggerEnter内は次のようになりました。

private void OnTriggerEnter (Collider other) {
is_dead = true; //死亡判定をオンに
gameover.SetActive(true); //ゲームオーバー表示
Destroy(this.gameObject);

 実際に動かしてみます。

 


GameOverの実装

うまく表示されました。

そのうち、文字が表示されるのを、自機が破壊されて数秒後にしたいです。

GameOverと表示する目的は達成されているので、ひとまずここまで。