ゲーム開発奮闘記

Unity・エフェクト・アプリ開発に関係した記事を書いています

Unity ParticleSystem Lesson:舞い上がる煙

今回、簡単な煙のエフェクト作成方法を紹介したいと思います。
f:id:KTK_kumamoto:20171224215101g:plain

※使用ソフトとバージョン
PhotoShop CC2015
Unity 2017.2.0p3

PhotoShopでテクスチャー作成

1.テクスチャー作成方法

・512x512 サイズで新規作成
f:id:KTK_kumamoto:20171219171812j:plain

・フィルタ>描画>雲模様2
f:id:KTK_kumamoto:20171224214239j:plain

・新規レイヤー作成
f:id:KTK_kumamoto:20171222165121j:plain

・キャンバスの中心に上下のガイドを引く
f:id:KTK_kumamoto:20171222165201j:plain

・中心から円形グラデーションで白から黒の円を作成
f:id:KTK_kumamoto:20171219172501j:plain

・レイヤーを乗算に変更
f:id:KTK_kumamoto:20171222165317j:plain

・調整レイヤーを新規作成:トーンカーブ
カーブを編集して明るさを調整する
f:id:KTK_kumamoto:20171224214519j:plain
f:id:KTK_kumamoto:20171222165547j:plain
f:id:KTK_kumamoto:20171222165606j:plain

・表示レイヤーを統合したものを複製
Ctrl+Alt+Shift+Eキー
f:id:KTK_kumamoto:20171222165631j:plain

・アクションのUnMultiplyを使用して黒い部分を除去
こちらは、ayato@web様より作成されているプラグインを使用します。
http://www.ayatoweb.com/download/down04.html
f:id:KTK_kumamoto:20171222164256j:plain

アクションを使用する「UnMultiply」:黒成分から透明部分を作成
f:id:KTK_kumamoto:20171222165726j:plain
f:id:KTK_kumamoto:20171222165843j:plain

・黒を抜いた状態のレイヤーのみを表示してpngで保存(eff_smoke.png 名前は任意に)
f:id:KTK_kumamoto:20171222165811j:plain
f:id:KTK_kumamoto:20171222165844j:plain

・テクスチャ完成!※真っ白に見えますが、透明部分と半透明の白色が含まれています。
f:id:KTK_kumamoto:20171224215042p:plain

②Unityでエフェクト作成

1.Unity Material作成

Project Windowで、Create > Material
Material名をeff_smokeと変える
ShaderをMobile/Particle/Alpha Blendedに設定
①で作成したeff_smoke.png テクスチャーを読み込んで、割り当てる。
f:id:KTK_kumamoto:20171222170419j:plain

2.Unity Particle System設定

パーティクルシステムを作成する

下記が設定です。
■Mainモジュール
Start Lifetime: 1.5, 3 (Random Between Tow Constants)
Start Speed: 0.1
Start Size: 4, 1.5 (Random Between Tow Constants)
Start Rotation: 0, 360 (Random Between Tow Constants)
Start Color: 383838FF
Gravity Modifier: -0.1
f:id:KTK_kumamoto:20171222170023j:plain

■Emission:Rate over Time 20
■ Shape: Shape:Cone, Angle:60, Radius:0.5
f:id:KTK_kumamoto:20171222170058j:plain

■ Color over Lifetime:
Alpha:100, Location:23.8%
Alpha:0, Location:100%
Color:FFFFFF, Location:0%
Color:000000, Location:100%
f:id:KTK_kumamoto:20171224215256j:plain

■ Size over Lifetime:
time:0 value:0.33027653
time:1 value:1
■ Rotation over Lifetime: -180, 180 (Random Between Tow Constants)
■ Renderer
Sort Mode:Oldest in Front ※先に発生したパーティクルが先に描画
f:id:KTK_kumamoto:20171224215325j:plain

3.完成!

f:id:KTK_kumamoto:20171224215101g:plain

サンプルは、下記にアップしています。
GitHub
GitHub:eff_smoke_sample.unitypackage
よかったら試してみてください!