(日記のまとめページはこちら:https://wakky.tech/unity-baseball-game/)
今回はボールが壁に当たった際、爽快感を増すために花火のようなエフェクトを出そうと思う。エフェクトの追加にはパーティクルを使う。将来的には、当たった壁の位置によってエフェクトを変えたいので、今回は壁にパーティクルを付加し、スクリプトでエフェクトを制御する。HierarchyからWallHR(スタジアム外野側中心)を選択し、InspectorでAdd Componentを選択。その中で Effects → Particle Systemを選択。
すると、ボールから白い光のようなエフェクトが垂れ流すように出てくる。今回のイメージは花火なので、花火っぽいエフェクトになるようにパラメータを調整。
各パラメータの説明は省くけど、花火っぽくするためのポイントを以下にメモしておく。
・Durationを短くして短い時間でパーティクルの再生を終了させる
・Start Speedでパーティクルの速度をあげる
・Color over Lifetimeで、途中からパーティクルの色を変える
衝突した際に花火を散らせる処理は、スクリプトから制御する。以下のScript「WallEffect.cs」をBallに添付する。
衝突の判別は、お馴染みのOnCollisionEnterを使用して、particle.Play();でパーティクルを再生している。このコンポーネントをコピーして、WallHR以外(ファールゾーンは除く。ファールにエフェクトつけるのもちょっと変だし)の壁にも貼り付ける。他のObjectにComponentをコピーするときは、コピー元のComponentの横の歯車ボタンを押し、「Copy Component」を選択する。そして、Copy先のObjectを選択し、適当なComponentの歯車ボタンを押して「Past Component As New」を選べばよい。実行して、ボールを壁にぶつけるとこんな感じになる。
これでエフェクトを付けることができた。