Unityでゲーム、アプリ開発

Unityで初めてゲームやアプリを作る人のための支援ブログです。

Unity ボール転がしでゴールしたらゲームクリアテキストを表示させよう。 初心者編26

今回は初心者のためのゴールテキストをスクリプトから表示させる方法なのですが、
Unityの前のバージョンでのやり方なのでテスト用でゲームを作っていく過程での記述になります。


ボール転がしでゴールしたらゲームクリアテキストを表示させよう。

f:id:Phoenix9056:20200507091610p:plain

※前回の続きからになるので分かりづらい人は下記記事を見てみてください。
www.unityprogram.info


f:id:Phoenix9056:20200507093733p:plain

前回作成した①HoleObjectスクリプトにクリア判定の
値を返すように変更していきます。
次のコードをコピー&ペーストするか同じ記述にしてください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HoleObject : MonoBehaviour
{
    //Bool型を変数goolで宣言します。
    bool gool;
    //GameObject型を変数bollで宣言します。
    public GameObject boll;

    //オブジェクトがゴール地点に入っているかreturnで返します。
    public bool Isgool()
    {
        return gool;
    }
    //コライダーが当たっていたらtrueにします。
    void OnTriggerEnter(Collider other)
    {
        if(other.gameObject == boll)
        {
            gool = true;
        }
    }
    //コライダーに触れていない時はfalseにします。
    void OnTriggerExit(Collider other)
    {
        if(other.gameObject == boll)
        {
            gool = false;
        }
    }

    //もしコライダーのに接触していた時の処理
    private void OnTriggerStay(Collider other)
    {
        //コライダーに触れている時のRigidbodyコンポーネントを取得します。
        Rigidbody rigidbody = other.gameObject.GetComponent<Rigidbody>();
        //ボールがどの方向にあるのかの計算をします。
        Vector3 vector3 = transform.position - other.gameObject.transform.position;
        vector3.Normalize();
        //ボールが入ったら速度を減速させて中心に持っていきます。
        if (other.gameObject == boll) { 

        rigidbody.velocity *= 0.8f;

        rigidbody.AddForce(vector3 * rigidbody.mass * 20.0f);
            } else
        {
            rigidbody.AddForce(-vector3 * rigidbody.mass * 80.0f);
        }
    }
}

そうしたら今度は、Hierarchy内にある②の+をクリック⇨Create Empty
選択して空のGameObjectを作成して名前をGool Checkに変更して
③のようにします。

今度はゴール判定の値を受け取ったらGUIテキストの表示が
されるスクリプトを作っていきます。
Project⇨Asset内で右クリック⇨Create⇨C# Scriptを選択して
名前をGoolCheckに変更してスクリプトを作ります。

次のコードをコピー&ペーストするか同じ記述にしてください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GoolCheck : MonoBehaviour
{
    //HoleObjectスクリプトを変数holeで宣言します。
    public HoleObject hole;

    //OnGUIでテキストを表示させる処理。
    private void OnGUI()
    {
        string label = "";

        if (hole.Isgool())
        {
            label = "GameClea!";
        }
        GUI.Label(new Rect(100, 100, 100, 30), label);
    }
}

出来上がった④のスクリプトを③のGoolCheckにドラッグ&ドロップして
アタッチしてからInspector内にある⑤のHoleの所に
Hierarchy内にあるHoleをドラッグ&ドロップして完成です。

今回OnGUI関数を使用していますが今のUnityのバージョンではエラーが出るので
スクリプトのコードを作っていく中でコードの確認程度で使用する事をオススメします。

f:id:Phoenix9056:20200507101808g:plain

非常に出るテキストの文字が小さいですね!笑笑
今回は色んな方法があるよって事で見て頂ければ幸いです。
ゲームクリアテキストをTextを使って表示をさせる方法は下記記事を覗いてみてください。
www.unityprogram.info

ご視聴ありがとうございました。


今日のゆうきさんのゲーム実況はコチラ!
グラフィックの綺麗なダークゲーム

youtu.be


関連記事

※初心者に向けた基本的な内容の記事は下記カテゴリを参考にしてください。
www.unityprogram.info

※オススメのアセットの紹介は下記カテゴリより。便利なアセットがあります。
www.unityprogram.info

※実際に使ってみたオススメの学習本は下記カテゴリから覗いてみてください。
www.unityprogram.info

※Unityでの学習をしていきたい方は下記カテゴリを参照してください。少し込み入った内容になっています。
www.unityprogram.info

※本格的に3Dゲームを作っていきたい方は下記カテゴリより。
www.unityprogram.info