決まった順番でオブジェクトにぶつからないと、取ることができない仕組みをつくってみましょう。
キューブを操作してオブジェクトを消していきますが、シリンダー、スフィア、カプセルの順序でなければ、消すことはできません。
関連記事:
ぶつかったオブジェクトを順に配列に入れる
ぶつかったオブジェクトをリストに追加する
クリックしたオブジェクトを順番に配列に入れる
ゴールした順位をテキスト表示
決まった順でなければ、オブジェクトを消せないようにする
Cubeを作成し、リジッドボディを追加します。
わかりやすくするため、マテリアルカラーをつけました。
Sphere、Cylinder、Cupsuleを作成。
「Target」というタグを新規作成し、設定します。
それぞれコライダーで、「トリガーにする」にチェックを入れます。
3つのオブジェクトを、X方向へ動かして、Cubeから離れた場所に配置します。
CubeMove.csを作成し、Cubeに追加しましょう。
CubeMove.csを記述します。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { public GameObject[] myArray = new GameObject[3]; public int count; void Start() { count = 0; } void Update() { float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3.0f; float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f; transform.position = new Vector3 ( transform.position.x + dx, 0, transform.position.z + dz ); } void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "Target" ) { if(count == 2 && other.gameObject.name == "Capsule"){ myArray[2]= other.gameObject; other.gameObject.SetActive(false); count++; } if(count == 1 && other.gameObject.name == "Sphere"){ myArray[1]= other.gameObject; other.gameObject.SetActive(false); count++; } if(count ==0 && other.gameObject.name == "Cylinder"){ myArray[0]= other.gameObject; other.gameObject.SetActive(false); count++; } } } } |
ゲームプレイして、Cubeを操作しましょう。
Cylinder、Sphere、Capsuleの順でなければ、オブジェクトを獲得することができません。
取ったオブジェクトを配列に格納する際、要素0~2に入るオブジェクト名を、あらかじめ指定しました。
関連記事:
ぶつかったオブジェクトを順に配列に入れる
ぶつかったオブジェクトをリストに追加する
クリックしたオブジェクトを順番に配列に入れる
ゴールした順位をテキスト表示