【Unity】パーティクルで紙ふぶきを散らす
紙ふぶきを散らすパーティクルのメモです。
手順
HierarchyビューのCreate>Particleでパーティクルを作成します。名前はParticleとでもしておきます。 ProjectビューのCreate>Materialでマテリアルを作成します。名前はpaperparticle
パーティクルの形状を変更
紙ふぶきなので、紙の感じのパーティクルを表現します。 ParticleのRendererのRenderModeをMeshに、MeshをQuadに、Materialを先ほど作成したpaperparticleに変更します。
このままだと大きすぎるので、ParticleSystemのStartSizeを0.6くらいにします。
パーティクルの生成する範囲を設定
初期状態だとコーン状にパーティクルがばら撒かれるので、雨のように面から降るようにします。
shapeのshapeをMeshに変更。その下のパラメータはTriangleを選択します。 MeshはPlaneを選択します。 RandomDirectionはONにしておきます。
向きと出現範囲はtransformで変更します。
パーティクルに動きを付ける
このままだと落下しないので、重力を設定します。
ParticleSystemのGravityModifierを0.1くらいに設定します。
紙ふぶきの回転は、Rotate by speedで設定します。
裏面も表示するようにする
最初からマテリアルに設定されているシェーダーだと裏面が表示されないので、裏面も表示するようにします。
Shader "Particle/Paper" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } Cull OFF CGPROGRAM #pragma surface surf Lambert sampler2D _MainTex; fixed4 _Color; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color; o.Albedo = c.rgb; o.Alpha = c.a; } ENDCG } Fallback "VertexLit" }
このシェーダーをマテリアルに設定します。要するに「Cull OFF(裏面を非表示にしない)」を設定しただけのシェーダーです。
あとは適当に
あとはテキトウにEmission(出現頻度)とMax Particles(最大個数)を調整したり、Duration(生存時間)を調整したり色々。
関連
オマケ
ちなみに、実際はこの手の紙ふぶきはメッシュをがんばるよりスプライトアニメーションで何とかした方がパフォーマンスのコスト的に割安です。 http://u3d.as/3SB