ゴールのオブジェクトに触れると、花火が出現するしくみを作ってみましょう。
今回は2D制作で、アイテムに触れると、5発の花火が順番に打ち上がるように、スクリプトを作成しています。
関連記事:
条件によってエフェクトのサイズを変える
爆発エフェクトを発生させるしくみ
クリックした位置にパーティクル発生
発生させたパーティクルをn秒後に削除
エフェクト発生の後にテキスト表示
進行方向にキャラクターの向きを変える(2D)
画像データを使ってアニメーション作成
敵に当たるとスコアを加点-2Dシューティング
アセットデータの用意
花火のエフェクトはこちらの、Cartoon FX Remaster Freeを利用させていただきました。
ゴールのアイテムはこちらの、2D Pixel Item Asset Packを利用させていただきました。
プレーヤーの魔女の画像は、こちらのpngファイルをダウンロードしてご利用ください。
それぞれインポートが終わると、プロジェクトビューはこのように確認できます。
オブジェクトの用意
プレーヤー(witch)の画像を、ヒエラルキーに配置します。
witchの位置を変更します。
2Dカプセルコライダー、2Dリジッドボディを追加し、キネマティックにします。
続いて、2Dアイテムパックから、アイテムを選んで配置します。
アイテムの名前をGoalに変更し、サイズと位置を変更します。
2Dボックスコライダーを追加し、トリガーにするにチェックを入れます。
ゲームビューではこのように見えています。
次に、花火の発生ポイントをつくりましょう。
空のオブジェクトを作成し、上部に配置。
わかりやすいように、アイコンをつけておきます。
これを複製して、ぜんぶで5つ作成し、適当なところに配置します。
シーンビューではこのように見えています。
アイテムに触れると花火を出現させる
FireWork.csを作成し、プレーヤー(witch)に追加します。
FireWork.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class FireWork : MonoBehaviour { [SerializeField] GameObject[] myArray = new GameObject[5]; [SerializeField] GameObject hanabi; Rigidbody2D rb2d; private float speed = 3.0f; void Start() { rb2d = GetComponent<Rigidbody2D>(); } void Update() { float input = Input.GetAxisRaw("Horizontal"); rb2d.velocity = new Vector2(input * speed, rb2d.velocity.y); if(input < 0) { transform.eulerAngles = new Vector3(0, 180 ,0); } else if(input > 0) { transform.eulerAngles = new Vector3(0,0,0); } } void OnTriggerEnter2D(Collider2D other) { if(other.gameObject.name == "Goal") StartCoroutine("HanabiShot"); } IEnumerator HanabiShot() { foreach(GameObject point in myArray) { Instantiate(hanabi, point.transform.position, Quaternion.identity); yield return new WaitForSeconds(0.5f); } } } |
MyArrayの要素0~4に、5つのGameObject(発生ポイント)を入れます。
Hanabiのフィールドに、CFX_FireWork(花火のエフェクト)を入れます。
ゲームプレイして、プレーヤーを操作しましょう。
アイテムにぶつかると、5つの花火が打ちあがります。
発生ポイントを配列に格納し、0.5秒おきにループで取り出し。
その発生ポイントの位置に、花火のプレハブを生成しています。
関連記事:
条件によってエフェクトのサイズを変える
爆発エフェクトを発生させるしくみ
クリックした位置にパーティクル発生
発生させたパーティクルをn秒後に削除
エフェクト発生の後にテキスト表示
進行方向にキャラクターの向きを変える(2D)
画像データを使ってアニメーション作成
敵に当たるとスコアを加点-2Dシューティング