【Unity】ParticleSystemで連番アニメーションをする方法

UnityでParticleSystemで連番アニメーションをする方法です。
Textureを使う方法とSpriteを使う方法を紹介します。

Unity2018.1.4

やりたいこと

連番アニメーションというのが正解かどうかわかりませんが、
コマ割りされた画像を切り替えてアニメーションを作ります。

f:id:halya_11:20181015173010p:plain

Textureを使う方法

まずTextureを使う方法ですParticles/Alpha Blendedなどパーティクル系のシェーダを使ったマテリアルを作ります。
Particle Textureにアトラスを持たせておきます。

f:id:halya_11:20181015173112p:plain

次にParticle Systemを作り、RendererのMaterialに上記で作ったものを指定します。

f:id:halya_11:20181015173411p:plain

最後にParticle SystemのTexture Sheet Animationを有効にし、次のように設定します。
ModeをGridにし、Tilesに縦横のスプライト数を指定するのがポイントです。
アニメーションの仕方(カーブ)や速度はFrame over TimeやCyclesで指定します。

f:id:halya_11:20181015173518p:plain

結果は次の通りです。

f:id:halya_11:20181015173853g:plain

連番アニメーションが作れました。

Spriteを使う方法

まずParticles/Alpha Blendedなどパーティクル系のシェーダを使ったマテリアルを作ります。
Textureを使う方法と異なり、Particle Textureは空にしておきます(Particle Systemにより自動的に設定されます)。

f:id:halya_11:20181015174007p:plain

次にParticle Systemを作り、RendererのMaterialに上記で作ったものを指定します。

f:id:halya_11:20181015174149p:plain

最後にParticle SystemのTexture Sheet Animationを有効にし、次のように設定します。
ModeをSpritesにし、アニメーションさせたい順番にSpriteを設定します。

f:id:halya_11:20181015174246p:plain

結果は次の通りです。

f:id:halya_11:20181015174443g:plain

こちらも正常に作れました。

ちなみに、違うスプライトシートのスプライトを同じParticle Systemに持たせると
エラーになり、アニメーションしなくなります。

f:id:halya_11:20181015175102p:plain

Spriteでやるメリット・デメリット

以上2つの方法を紹介しましたが、TextureではなくSpriteで作ったほうが以下のメリットがあります。

まずTextureによる方法ではアニメーションの順番を差し替えられないのに対し、
Spriteによる方法は自由に順番を差し替えられます。

また、Spriteによる方法のほうが描画負荷が低くなります。
これに関しては下記の記事が詳しいです。

tsubakit1.hateblo.jp

デメリットとしてはSpriteを1個1個設定するのが面倒ということがありそうです。
場合によってはエディタ拡張で簡単に設定できるツールを作ったほうが良さそうです。

使用したアセット

assetstore.unity.com

参考サイト

docs.unity3d.com

tsubakit1.hateblo.jp