Unity

[Unity] ParticleSystemで連番テクスチャを扱う (TextureSheetAnimation)

More than 1 year has passed since last update.


実行環境


  • Unity5.6.0b1 (beta)


第6回ゲームエフェクトコンテスト

image


  • https://www.gameeffectcontest.com/

  • 2017年2月25日までエントリーを受け付けているコンテスト

  • 第6回からUnity部門も開催!

  • 決められたテクスチャ群を利用するテクニカル部門とフリー部門が存在する


    • テクニカル部門は素材を1から用意する必要が無いのでUnityを多少扱えるエンジニアでも戦えそう



image


連番テクスチャ


  • テクニカル部門の素材に含まれる以下のような画像がある

  • このようにアトラス化されたTextureをUnityのParticleSystem(Shuriken)でどのように扱えば良いか?

image


TextureSheetAnimation

image

項目名

Tiles
X/Yのそれぞれに対して何分割するか

Animation
WholeSheetはテクスチャシート全体を左から右、上から下へとアニメーションする設定 / SingleRowはシートの1列のみを左から右にアニメーションする

RandomRow
AnimationがSingleRowのとき、どの列を再生するかランダムで決定する

Row
AnimationがSingleRowかつRandomRowが無効のとき、どの列を再生するか指定する

FrameOverTime
アニメーションのフレームが進行するにつれてどのように切り替わるか

StartFrame
どのフレームからパーティクルを開始するか

Cycles
パーティクルの生存時間中に何回アニメーションをループさせるか

FlipU
U座標を反転させて、水平に鏡映したように見せる

FlipV
V座標を反転させて、垂直に鏡映したように見せる

EnabledUVChannels
指定したUVに対してマスクを適応する


サンプル


下準備



  • Materialを生成


    • 任意のShaderを指定 (今回は Mobile/Particle/Additive)

    • アトラス化されたテクスチャを指定



  • ParticleSystemをScene上に追加

create_material.gif


ParticleSystemの設定



  • Renderer


    • Materialを指定

    • MaxParticleSizeを1に指定




  • TextureSheetAnimation


    • 有効にする

    • TileXに8 / TileYに4を指定する




  • Shape


    • 無効にして出現位置/射出方向を拡散しないようにする




  • ParticleSystem


    • StartSpeedを0にしてその場に留まるようにする

    • StartSizeを10に設定に設定し大きく描画

    • Duration / StartLifetime 共に2に設定し、再生時間を調整




  • Emission


    • RateOverTimeを0にし、継続して射出しないようにする

    • Burstsを有効にし、0.00時点でMin/Maxを1に指定し、1個だけ表示されるようにする



particle_setting.gif


再生


  • 通常再生

particle_effect.gif


  • フレーム送り (ショートカットキー: mでフレーム毎にコマ送り再生)

particle_effect_frame.gif


後は加工して好みのエフェクトにするだけ!


  • (色味を加え、RateOverTimeに変更しつつ、ランダム回転加え、重力を逆方向に指定した図)

effect.gif