アイテムを取った後、数秒経過すれば、また元の位置にアイテムが出てくるように、スクリプトを作成しましょう。
今回の例では、Sphereを取ってから1秒後にまた出現するしくみを作ります。
Prefabを取れば1秒後に再出現
Cubeを作成し、リジッドボディを追加。
重力を使用のチェックを外します。
Sphereを作成し、トリガーにするにチェック。
Itemという名前でタグをつけます。
Sphereを、プロジェクトビューにドラッグ&ドロップし、Prefab化します。
Sphereの元データを消します。
PlayerScript.csを作成し、Cubeに追加します。
PlayerScript.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerScript : MonoBehaviour { [SerializeField] GameObject item; float time; bool isSpawn; void Start() { isSpawn = false; } void Update() { float dx = Input.GetAxis("Horizontal") * 0.1f; float dz = Input.GetAxis("Vertical") * 0.1f; transform.position = new Vector3 ( transform.position.x + dx, 0, transform.position.z + dz ); time -= Time.deltaTime; if(time <= 0 && !isSpawn) { Instantiate(item,new Vector3(0, 0, 0),Quaternion.identity); isSpawn = true; } } void OnTriggerEnter(Collider other) { if(other.gameObject.tag == "Item") { Destroy(other.gameObject); time = 1.0f; isSpawn = false; } } } |
Itemのフィールドに、Sphereを入れます。
ゲームプレイしてみましょう。
Sphereをゲットして消えると、また1秒後に同じ場所に生成されます。