[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

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.