一つのオブジェクトを取れば、次のオブジェクトが出現するように、スクリプトを作成してみましょう。
今回の例では、3つのSphereがあり、一つを取れば消えて、次のSphereが出てくるようになります。
関連記事:
2つのオブジェクトを順繰りで動かす
複数のマテリアルをスクリプトで切り替え
指定した座標(目的地点)へ行く
触れると他の位置へワープする
消えれば次のPrefabが発射可能
触れると次のオブジェクトを表示
Cubeを作成し、リジッドボディを追加。
Use Gravityのチェックを外します。
Sphereを3つ作成し、それぞれトリガーにするにチェック。
前後左右に配置を変えます。
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 49 50 51 52 53 54 55 56 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { public GameObject[] myArray = new GameObject[3]; public int count; private float speed = 3.0f; void Update() { float moveX = Input.GetAxis("Horizontal") * Time.deltaTime * speed; float moveZ = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.position = new Vector3 ( transform.position.x + moveX, transform.position.y, transform.position.z + moveZ ); if(count == 0){ myArray[0].gameObject.SetActive(false); myArray[1].gameObject.SetActive(true); myArray[2].gameObject.SetActive(false); } if(count == 1){ myArray[0].gameObject.SetActive(false); myArray[1].gameObject.SetActive(false); myArray[2].gameObject.SetActive(true); } if(count == 2){ myArray[0].gameObject.SetActive(true); myArray[1].gameObject.SetActive(false); myArray[2].gameObject.SetActive(false); } } void OnTriggerEnter(Collider other) { if (other.gameObject.name == "SphereA" ) { count = 0; } if (other.gameObject.name == "SphereB" ) { count = 1; } if (other.gameObject.name == "SphereC" ) { count = 2; } } } |
MyArrayを開き、要素0~2の中に、3つのSphereを入れます。
ゲームプレイしましょう。
一つのSphereを取れば、また次のSphereが現れます。
関連記事:
2つのオブジェクトを順繰りで動かす
複数のマテリアルをスクリプトで切り替え
指定した座標(目的地点)へ行く
触れると他の位置へワープする
消えれば次のPrefabが発射可能