オブジェクトを取った分だけ、置けるように、スクリプトを作成してみましょう。
Sphereにぶつかれば、取った数としてカウント。
取った数以上に、Sphereを生成することはできません。
関連記事:
指定した要素番号のオブジェクトを置く
配列の中のオブジェクトを選んで置く
前方にオブジェクトを置く
複数オブジェクトの出し入れ
取った分しか置けない仕組み
Cubeを作成し、リジッドボディを追加。
UseGravityのチェックを外します。
空のオブジェクトを作成し、Z座標を1.5にします。
GameObjectをCubeにドラッグ&ドロップし、親子関係をつくります。
Sphereを作成し、Itemという名前でタグをつけます。
Sphereをプロジェクトビューにドラッグ&ドロップし、Prefab化します。
Sphereのプレハブを、シーンビューにドラッグ&ドロップし、Sphereの数を増やしておきます。
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 sphere; public Transform putPosition; private float count; 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(count > 0 && Input.GetKeyDown("space")) { Instantiate(sphere, putPosition.position, Quaternion.identity); count--; } } void OnCollisionEnter(Collision other) { if (other.gameObject.tag == "Item" ) { count++; Destroy(other.gameObject); } } } |
Sphereのフィールドには、Sphereのプレハブデータを、PutPositoinのフィールドには、GameObjectを入れます。
ゲームプレイしてみましょう。
Sphereにぶつかった数をカウントし、その数が0になれば置くことができません。
関連記事:
指定した要素番号のオブジェクトを置く
配列の中のオブジェクトを選んで置く
前方にオブジェクトを置く
複数オブジェクトの出し入れ