複数オブジェクトを、取ったり置いたりできるようにしましょう。
3つのSphereが存在しますが、それぞれを取らなければ置くことができません。
配列とPrefabを使って、2つ以上のオブジェクトの削除、生成のしくみをつくります。
関連記事:
指定した要素番号のオブジェクトを置く
取った数だけ設置できる
配列の中のオブジェクトを選んで置く
指定した要素番号にオブジェクトを入れる
2つ以上のオブジェクトを削除・生成
Cubeを作成し、リジッドボディを追加。
UseGravityのチェックを外します。
空のオブジェクトを作成し、Z座標を1.5に変更します。
GameObjectをCubeの中にドラッグ&ドロップし、親子関係を作ります。
SphereA、SphereB、SphereCを作成し、わかりやすいように、それぞれマテリアルカラーをつけます。
3つのオブジェクトを、プロジェクトビューにドラッグ&ドロップし、Prefab化します。
SphereA、SphereB、SphereCの座標を変えて、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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { public GameObject[] setArray = new GameObject[3]; public GameObject[] myArray = new GameObject[3]; private int countA; private int countB; private int countC; public Transform putPosition; void Start() { countA = 1; countB = 1; countC = 1; } void Update() { if(Input.GetKey("up")) { transform.position += transform.forward * 0.03f; } if(Input.GetKey("down")) { transform.position += transform.forward * -0.03f; } if(Input.GetKey("right")) { transform.Rotate(0,2,0); } if(Input.GetKey("left")) { transform.Rotate(0,-2,0); } if(countA == 0 && Input.GetKeyDown(KeyCode.Alpha1)) { Instantiate(myArray[0], putPosition.position, Quaternion.identity); countA++; } if(countB == 0 && Input.GetKeyDown(KeyCode.Alpha2)) { Instantiate(myArray[1], putPosition.position, Quaternion.identity); countB++; } if(countC == 0 && Input.GetKeyDown(KeyCode.Alpha3)) { Instantiate(myArray[2], putPosition.position, Quaternion.identity); countC++; } } void OnCollisionEnter(Collision other) { if (other.gameObject.name == "SphereA" || other.gameObject.name == "SphereA(Clone)") { Destroy(other.gameObject); myArray[0] = setArray[0].gameObject; countA--; } if (other.gameObject.name == "SphereB" || other.gameObject.name == "SphereB(Clone)") { Destroy(other.gameObject); myArray[1] = setArray[1].gameObject; countB--; } if (other.gameObject.name == "SphereC" || other.gameObject.name == "SphereC(Clone)") { Destroy(other.gameObject); myArray[2] = setArray[2].gameObject; countC--; } } } |
SetArrayの要素フィールドに、3つのPrefabデータを入れます。
PutPositionのフィールドに、GameObjectを入れます。
ゲームプレイして、十字キー操作でSphereを取りましょう。
取ったオブジェクトは削除されてmyArrayに入ります。
1~3のキー入力で、再び設置できるようになります。
関連記事:
指定した要素番号のオブジェクトを置く
取った数だけ設置できる
配列の中のオブジェクトを選んで置く
指定した要素番号にオブジェクトを入れる