テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】パーティクルで紙ふぶきを散らす

紙ふぶきを散らすパーティクルのメモです。

手順

HierarchyビューのCreate>Particleでパーティクルを作成します。名前はParticleとでもしておきます。 ProjectビューのCreate>Materialでマテリアルを作成します。名前はpaperparticle

パーティクルの形状を変更

紙ふぶきなので、紙の感じのパーティクルを表現します。 ParticleのRendererのRenderModeをMeshに、MeshをQuadに、Materialを先ほど作成したpaperparticleに変更します。

f:id:tsubaki_t1:20150905032922p:plain

このままだと大きすぎるので、ParticleSystemのStartSizeを0.6くらいにします。

f:id:tsubaki_t1:20150905034819p:plain

パーティクルの生成する範囲を設定

初期状態だとコーン状にパーティクルがばら撒かれるので、雨のように面から降るようにします。

shapeのshapeをMeshに変更。その下のパラメータはTriangleを選択します。 MeshはPlaneを選択します。 RandomDirectionはONにしておきます。

f:id:tsubaki_t1:20150905034522p:plain f:id:tsubaki_t1:20150905035109p:plain

向きと出現範囲はtransformで変更します。

f:id:tsubaki_t1:20150905035222p:plain

パーティクルに動きを付ける

このままだと落下しないので、重力を設定します。

ParticleSystemのGravityModifierを0.1くらいに設定します。

f:id:tsubaki_t1:20150905034837p:plain f:id:tsubaki_t1:20150905035117p:plain

紙ふぶきの回転は、Rotate by speedで設定します。

f:id:tsubaki_t1:20150905035330p:plain

裏面も表示するようにする

最初からマテリアルに設定されているシェーダーだと裏面が表示されないので、裏面も表示するようにします。

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(生存時間)を調整したり色々。

f:id:tsubaki_t1:20150905035738g:plain

関連

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp

オマケ

ちなみに、実際はこの手の紙ふぶきはメッシュをがんばるよりスプライトアニメーションで何とかした方がパフォーマンスのコスト的に割安です。 f:id:tsubaki_t1:20150905210503g:plain http://u3d.as/3SB