【Unity】ゲームクリアとゲームオーバー【超初心者】

2021年11月20日追記
Unreal Engine4でもブロック崩しを作りました。
ゲームクリア、ゲームオーバーも作ってあります。

👆自作キャラがいなくても、ブロック崩しを作れるように説明しています。

👇UE4のインストール方法

参考動画

【Unity入門】基本的なUIの作り方とゲームクリア、ゲームオーバーの実装方法を解説します【ひろはす】

作ったゲーム

BlockPractice4

復習問題

ゲームクリア

GameManagerのスクリプトに次のコードを書く。

public Block[] blocks;

GameManagerのスクリプトに次のコードを書く。

private bool DestroyAllBlocks()
    {
        foreach( Block b in blocks)
        {
            if( b != null)
            {
                return false;
            }
        }
        return true;
    }

bool型:tureかfalseのみが入る型
foreachは、配列の中の各要素に対して命令をできる。
配列についての処理では使うことが多いらしい。便利。
今回はblocksの中のBlockの数だけループして処理を実行。

GameManagerのスクリプトのvoid Update の中に書く。

if(DestroyAllBlocks())
        {
            //ゲームクリア
            Debug.Log("ゲームクリア");
        }

こまめにコメントを書いておくと後で役に立つ。

ゲームオーバーのUIとほぼ同じ。コピペを上手く使って作業時間を短縮する。
違いは、ゲームクリアの処理はvoid Update()にあること。ただコピペしただけだと、なんども同じ処理をしてしまう。
そこで以下のようにする。
1.まず、GameManagerのスクリプトに次のコードを書く。

private bool isGameClear = false;

= false は、isGameClear の変数にデフォルトでfalseを入れる処理。
2.GameManagerのスクリプトのUpdateの中身に次のコードを書く。

 if(isGameClear != true)
        {
            if (DestroyAllBlocks())
            {
                //ゲームクリア
                Debug.Log("ゲームクリア");
                gameClearUI.SetActive(true);
                isGameClear = true;
            }
        }
研究員A
研究員A

ゲーム後ボールを消す方法は今までの方法を使って作ってみました。まわりくどい作り方かも。

1.Ballのスクリプトに次のコードを書く。

public void DestroyBall()
    {
        Destroy(this.gameObject);
    }

2.GameManagerのスクリプトに次のコードを書く。

public Ball myBall;

3.GameManagerのスクリプトのゲームクリアの処理に次のコードを追加する。

myBall.DestroyBall();

4.Unityの画面で、My BallにBallオブジェクトを入れる。

ゲームオーバー

GameManagerのスクリプトに次のコードを書く。

public void GameOver()
    {
        Debug.Log("ゲームオーバー");
    }

1.下の壁に、Finishのタグをつけておく。

2.Ballのスクリプトに次のコードを書く。

private void OnCollisionEnter(Collision collision)
    {
        if(collision.gameObject.tag == "Finish")
        {
            Destroy(this.gameObject);
        }
        
    }

1.Ballのスクリプトに次の書く。

public GameManager myManager;

2.BallのスクリプトのOnCollisionEnterの中に次のコードを書く。

myManager.GameOver();

3.その後Unityの画面で、BallのオブジェクトMyManagerにGameManagerのオブジェクトをドラッグ&ドロップ。

1.GameObject → UI で、TextとButtonを作成。(ゲームオーバーのUI)
2.ButtonのOn Click()の中にGameManagerのオブジェクトを入れる。
※注意:OnClickの中に入れるのは、GameManagerのスクリプトではないです。僕は間違えてしばらく困っていました。

3.GameManagerのスクリプトにコードを書く。

public void GameRetry()
    {
        SceneManager.LoadScene("シーン名");
    }

4.次のコードをGameManagerのスクリプトの上に書く。

using UnityEngine.SceneManagement;

5.File → Build SettingのSeanes in Buildの中に上で使ったシーンをドラッグ&ドロップ。

6.BUttonのon click()のfunctionをGameRetry()にする。

シーン読み込み後、暗くなる場合の対処法

トップ画面の左上から、

Window>Rendering>lightingの順に選び、Generate Lightingをクリックすれば良いです。

1.ゲームオーバーのUIを非表示にしておく。

2.GameManagerのスクリプトにコードを書く。

public GameObject gameOverUI;

3.GameManagerのスクリプトのGameOver()の中にコードを書く。

gameOverUI.SetActive(true);

4.GameManagerのオブジェクトの、Game Over UI の中に、ゲームオーバーのUIをドラッグ&ドロップ。

これから

Unreal Engine4をインストールしてみました!面白そうなので、しばらく動画を見ながら学んでみます。

👇UE4のインストール方法

Twitterしてます

ブログの更新をお知らせ

コメント

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