ゴールした順位とオブジェクト名を、テキストで表示できる仕組みを作ってみましょう。
3つのPrefabを走らせ、ゴールにたどり着いた順番に、1位、2位, 3位と、該当のオブジェクト名を表示します。
関連記事:
入力テキストを順番に配列に入れる
ランダム表示したPrefabを順に配列に入れる
配列にあるオブジェクトを要素番号で呼び出す
ぶつかったオブジェクトを順に配列に入れる
複数のオブジェクト名を配列に入れてテキスト表示
リストのオブジェクト名を一行でテキスト表示
指定した順序でオブジェクトを取る
テキストサイズをゆっくり拡大
移動するPrefabの作成
Cubeを作成し、リジッドボディを追加して、UseGravityのチェックを外します。
Targetというタグ名を付け、トリガーにするにチェックを入れます。
CubeMove.csを作成し、Cubeに追加します。
CubeMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { private float move; void Start() { move = Random.Range(3.0f, 5.0f); } void Update() { transform.Translate(0f, 0f, move*Time.deltaTime); } } |
このスクリプトでは、Cubeのスピードを3~5の範囲でランダム変化させ、到着タイミングに差をつけています。
続いて、Cubeをプロジェクトビューにドラッグ&ドロップして、Prefab化します。
Cubeの元データは削除しておきます。
ゴール位置とPrefab生成
ゴール位置として空のオブジェクトを作成し、ボックスコライダーを追加。
位置とサイズを変更します。
CubeClone.csを作成し、GameObjectに追加します。
CubeClone.csを記述します。
このスクリプトでは、Cubeプレハブの生成と、ゴールにたどり着いたときの順位を表示します。
生成したCubeのオブジェクト名に、連番がつくようにしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class CubeClone : MonoBehaviour { [SerializeField] GameObject prefab; private float xPos; public List<string> myList = new List<string>(); public Text firstText; public Text secondText; public Text thirdText; private int count; void Start() { count = 0; xPos = -3.0f; for(int i=0; i<3; i++) { xPos+=1.5f; GameObject cube =Instantiate(prefab,new Vector3(xPos, 0, 0),Quaternion.identity); cube.name = "Cube" + i.ToString(); } } void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "Target" ) { myList.Add(other.gameObject.name); other.gameObject.SetActive(false); count++; } } void Update() { if(count == 1) { firstText.text = "1位: "+ myList[0]; } else if(count == 2) { secondText.text = "2位: "+ myList[1]; } else if(count == 3) { thirdText.text = "3位: "+ myList[2]; } } } |
ゴールした順位をテキスト表示
続いて、テキストを3つ作成し、それぞれ名前を変更。
3つのテキストの座標をそれぞれ変えて、横並びに配置します。
プレハブのフィールドにCubeを入れ、3つのテキストフィールドに、それぞれのテキストオブジェクトを入れます。
ゲームプレイしてみましょう。
ゴールに着いた順に、1位、2位、3位のオブジェクト名が、それぞれテキストで表示されます。
関連記事:
入力テキストを順番に配列に入れる
ランダム表示したPrefabを順に配列に入れる
配列にあるオブジェクトを要素番号で呼び出す
ぶつかったオブジェクトを順に配列に入れる
複数のオブジェクト名を配列に入れてテキスト表示
リストのオブジェクト名を一行でテキスト表示
指定した順序でオブジェクトを取る
テキストサイズをゆっくり拡大