エフェクト発生がはじまり、n秒経過してから、Textオブジェクトが表示されるしくみを作りましょう。
クリックでCubeを壊すと、爆発のエフェクトが発生。
1秒経ってから、テキストが表示されます。
関連記事:
エフェクト再生後に次のエフェクト発生
発生させたパーティクルをn秒後に削除
Invokeを使ってn秒後に関数を実行する
数秒後にオブジェクトを出現させる
コルーチンを使って1秒後にテキストを消す
触れた相手をn秒後に削除する
乗ったオブジェクトをn秒後に消す
出現してから1秒後に落下する
ゴールすれば花火を打ち上げる
テキストを回転させて表示
オブジェクトをクリックすればテキスト表示
テキストを右から左へ流す
エフェクトから1秒後にオブジェクト表示
今回のUnityバージョンは、Unity2019.4.27 を使用しています。
パーティクルは、Procedural fire というフリーアセットをインポートさせていただきました。
インポートが終われば、Hovl Studioというフォルダが追加されています。
Cubeオブジェクトを作成します。
今回テキストは、TextMeshProで作成します。
テキストの色や配置を変更し、GameClearの文字を入れました。
ゲームビューではこのように見えています。
テキストはいったん非表示にします。
プレハブデータは、Assets > Hovl Studio > Procedural fire > Prefabs > Explosion を使います。
Explosionのパーティクルをループさせないようにします。
Explosionを選択し、プレハブを開くをクリック。
Explosionの階層すべてに対して、ループのチェックを外します。
ヒエラルキーの←を押し、元のシーンビューに戻ります。
空のオブジェクトを作成します。
ObjDestroy.csを作成し、GameObject(空のオブジェクト)に追加します。
ObjDestroy.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ObjDestroy : MonoBehaviour { [SerializeField] GameObject clearText; [SerializeField] GameObject explosionPrefab; void Update () { if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { Instantiate (explosionPrefab, transform.position, Quaternion.identity); Destroy(hit.collider.gameObject); Invoke("SetText", 1.0f); } } } void SetText() { clearText.SetActive(true); } } |
GameObjectのインスペクターを確認します。
ClearTextのフィールドにTextオブジェクトを入れ、ExplosionPrefabのフィールドには、Explosionのプレハブを入れます。
ゲームプレイして、Cubeをクリックしましょう。
クリックでRayを飛ばし、Cubeに当たれば爆発のエフェクトを生成。
Invokeを使用して、生成のあと1秒経過してから、テキストを表示しています。
関連記事:
エフェクト再生後に次のエフェクト発生
発生させたパーティクルをn秒後に削除
Invokeを使ってn秒後に関数を実行する
数秒後にオブジェクトを出現させる
コルーチンを使って1秒後にテキストを消す
触れた相手をn秒後に削除する
乗ったオブジェクトをn秒後に消す
出現してから1秒後に落下する
ゴールすれば花火を打ち上げる
テキストを回転させて表示
オブジェクトをクリックすればテキスト表示
テキストを右から左へ流す