触れている状態のオブジェクト、n秒後にすべて消せるようにしましょう。
ぶつかっている対象が2個以上の場合、オブジェクトをリストの中に入れて、一気に削除します。
色付きのCubeに触れると、1秒おきに同時に複数のオブジェクトを破壊していきます。
関連記事:
乗ったオブジェクトをn秒後に消す
リストの中で指定した要素を削除
リストの中で最後に追加された要素から削除
リストを古い要素(先頭)から削除
倒れると削除
触れている相手に一定間隔で力を加える
触れたオブジェクトが2秒後に落下
リストに入ったオブジェクトを全削除
Cubeにリジッドボディを追加し、このように積み上げます。
すべて、Destroyという名前でタグをつけています。
一番上にもCube(白色)を作成し、リジッドボディを追加します。
DestroyObject.csを作成し、Cubeに追加します。
DestroyObject.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 DestroyObject : MonoBehaviour { public List<GameObject> myList = new List<GameObject>(); private float time; private bool isTouch; void Start() { time = 1; isTouch = false; } void OnCollisionEnter(Collision other) { if(other.gameObject.tag == "Destroy") { myList.Add(other.gameObject); isTouch = true; } } void Update() { if(isTouch) { time -= Time.deltaTime; if(time <= 0) { for (int i = 0; i < myList.Count; i++) { Destroy (myList[i]); } myList.Clear(); isTouch = false; time = 1; } } } } |
ゲームプレイしてみましょう。
触れた相手のオブジェクトをいったん全てリストに格納。
リストの中のオブジェクトをすべて削除しています。
関連記事:
乗ったオブジェクトをn秒後に消す
リストの中で指定した要素を削除
リストの中で最後に追加された要素から削除
リストを古い要素(先頭)から削除
倒れると削除
触れている相手に一定間隔で力を加える
触れたオブジェクトが2秒後に落下