【Unity】Unityで3D野球盤をつくろう日記 11日目:ボールがぶつかったときのエフェクトの追加(パーティクルをスクリプトで制御)

投稿日:2017年3月31日
最終更新日:2019年1月19日

(日記のまとめページはこちら:https://wakky.tech/unity-baseball-game/

今回はボールが壁に当たった際、爽快感を増すために花火のようなエフェクトを出そうと思う。エフェクトの追加にはパーティクルを使う。将来的には、当たった壁の位置によってエフェクトを変えたいので、今回は壁にパーティクルを付加し、スクリプトでエフェクトを制御する。HierarchyからWallHR(スタジアム外野側中心)を選択し、InspectorでAdd Componentを選択。その中で Effects → Particle Systemを選択。

すると、ボールから白い光のようなエフェクトが垂れ流すように出てくる。今回のイメージは花火なので、花火っぽいエフェクトになるようにパラメータを調整。

各パラメータの説明は省くけど、花火っぽくするためのポイントを以下にメモしておく。

・Durationを短くして短い時間でパーティクルの再生を終了させる
・Start Speedでパーティクルの速度をあげる
・Color over Lifetimeで、途中からパーティクルの色を変える

衝突した際に花火を散らせる処理は、スクリプトから制御する。以下のScript「WallEffect.cs」をBallに添付する。

https://gist.github.com/WakkyFree/c23b1f4de210b667e14d38f181c62451/87f9a22db73bdce2a427930975f456009aa2c93e

衝突の判別は、お馴染みのOnCollisionEnterを使用して、particle.Play();でパーティクルを再生している。このコンポーネントをコピーして、WallHR以外(ファールゾーンは除く。ファールにエフェクトつけるのもちょっと変だし)の壁にも貼り付ける。他のObjectにComponentをコピーするときは、コピー元のComponentの横の歯車ボタンを押し、「Copy Component」を選択する。そして、Copy先のObjectを選択し、適当なComponentの歯車ボタンを押して「Past Component As New」を選べばよい。実行して、ボールを壁にぶつけるとこんな感じになる。

これでエフェクトを付けることができた。


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください