今回はUnity 2017.1で搭載された「Particle Animation」のスプライト版についてです。
Spriteのパーティクルアニメーション
Unity 2017.1より、パーティクルアニメーションにSpriteが使用できるようになりました。
使用できるのは同一のAtlasに格納されているSpriteのみといった制限がありますが、Spriteの順番の一部を変更したり、パーティクル用のアニメーションをSpriteから作成出来たりと、割と良い感じです。
細かいパーティクルの順番制御が可能に
順番にスプライトを指定する事で、アニメーションの順番制御…だけでなく、一枚のテクスチャから複数のパターンを作り出す事が可能になりました。
例えば爆発でも、そのまま爆発する物、一瞬収束して爆発するもの、爆発する際に破片を飛び散らせる物、肉片を飛び散らせる物等色々あるかもしれません。
今まで使用してきたGridベースののアニメーションは、テクスチャをX/Yで分割しUV移動でアニメーションを実現してきた為、上のような細かい制御は出来ませんでした。
しかしSpriteベースのアプローチでは、設定するSpriteを差し替えるだけなので、割と柔軟にスプライトの差し替えが期待出来ます。
オーバードローの抑制
パーティクルで問題になりやすいのが、オーバードローです。
Gridベースのアニメーションは透明抜きは出来ずグリッドで指定した範囲を全て描画するので、特に「小さい火種から大きな爆発に至る」ようなパーティクルは非常に高コストで描画する必要がありました。
Spriteベースではポリゴンごと差し替える処理が入るので、その辺りは非常に低コストで実現出来ています。
下の絵は上の絵と同じような構成のパーティクルですが、アルファで抜かれている部分(特に小さな火種のタイミング)では描画面積は小さく抑えられており、フィルレートをかなり節約出来ている事が伺えます。
ポリゴンではなくQUADなのは、パーティクルのアップロードコストを下げるためのように思います。MeshでやるとUploadが凄いことになりますし
設定方法
- Texture Sheet AnimationのModeをGridからSpritesへ
- +ボタンを押してセットするSpriteのスロットを追加
- Spriteを登録