ぶつかった相手のオブジェクトを、何秒後かに消せるしくみを作ってみましょう。
Cubeオブジェクトに接触すれば、1秒後に消えます。
この例では、Sphere側のスクリプトから、Cubeを破壊しています。
関連記事:
Invokeを使ってn秒後に関数を実行する
1秒後にPrefabを削除する
コルーチンを使って1秒後にテキストを消す
乗ったオブジェクトをn秒後に消す
触れたオブジェクトが2秒後に落下
触れたオブジェクトを取得して数秒後に壊す
CubeとSphereを作成します。
Sphereにリジッドボディを追加します。
SphereMove.csを作成し、Sphereに追加します。
SphereMove.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 SphereMove : MonoBehaviour { public bool isTouched; public float time; public GameObject destroyObj; void Start() { isTouched = false; time = 1.0f; } void OnCollisionEnter(Collision other) { if(other.gameObject.name == "Cube") { destroyObj = other.gameObject; isTouched = true; } } void Update() { if(isTouched) { time -= Time.deltaTime; if(time <= 0) { Destroy(destroyObj); } } 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 ); } } |
ゲームプレイしてみましょう。
Cubeに触れてから1秒後に消えます。
触れたタイミングで、CubeをdestroyObjに格納。
Update()の中で1秒間カウントして、destroyObjを破壊します。
関連記事:
Invokeを使ってn秒後に関数を実行する
1秒後にPrefabを削除する
コルーチンを使って1秒後にテキストを消す
乗ったオブジェクトをn秒後に消す
触れたオブジェクトが2秒後に落下