1. 程式人生 > 其它 >unity 粒子系統

unity 粒子系統

技術標籤:筆記

新建一個粒子系統:Component > Effects > Particle System
屬性面板:在這裡插入圖片描述
Duration: 持續時間。即把迴圈關了以後,持續多少秒停止發射粒子

Looping: 迴圈

Prewarm: 預熱。粒子系統在遊戲開始前就開始計算

Start Delay: 延遲。即延遲多少秒開始發射粒子

Start Lifetime: 初始化粒子生命週期

1 Constant: 常數

2 Curve: 曲線

3 Random Between Two Constants: 兩個常數之間的隨機數

4 Random Between Two Curves: 兩條曲線之間的隨機數

Start Speed : 初始化粒子速度

3D Start Size : 3D初始化大小(可以對X、Y、Z進行調節)

Start Size : 初始化大小

3D Start Rotation: 3D初始化旋轉

Start Rotation: 初始化旋轉

Randomize Rotation: 隨機旋轉

Start Color:初始化顏色

Gravity Modifier: 重力

Simulation space: 粒子隨本地座標還是世界座標移動

Simulation Speed: 粒子速度(可以改變粒子的速度,粒子的移動距離卻不會改變。與“Start Speed”不同,初始化速度越快能移動的距離越遠)

Scaling Mode: 拓展模式

Play On Awake: 執行時喚醒

Max Particles: 發射最大粒子數

Random Seed: 隨機種子,不同的數值,發射粒子的表現略有不同

Auto Random Seed: 自動隨機種子。
在這裡插入圖片描述
預設展開的是粒子系統的初始化模組:此模組為固有模組,不可刪除或者禁用。該模組定義了粒子初始化時的持續時間、迴圈方式、發射速度、大小等一些列基本的引數。

Emission:發射模組

控制粒子的發射速率(Rate),在粒子持續時間內,可實現某個特定時間生成大量粒子的效果,可模擬爆炸效果生成一大堆的粒子。

Shape :形狀模組

定義粒子發射器的形狀,可提供沿形狀表面法線或隨機方向的初始力,並控制粒子的發射位置以及方向。

Velocity over Lifetime :生命週期速度模組

制著生命週期內每一個粒子的速度,對有著物理行為的粒子效果更明顯,但對於那些簡單視覺行為效果的粒子,如煙霧飄散效果以及與物理世界幾乎沒有互動行為的粒子,此模組的作用就不明顯了。

Limit Velocity over lifetime :生命週期速度限制模組

控制粒子在生命週期內的速度限制以及速度衰減,可以模擬類似拖動的效果。若粒子的速度超過設定的限定值,則粒子速度之會被鎖定到該限定值。

Force over Lifetime:生命週期作用力模組

控制粒子在生命週期內的受力情況。

Color over lifetime:生命週期顏色模組

控制粒子在生命週期內的顏色變化。

Color by Speed:顏色的速度控制模組

此模組可讓每個粒子的顏色根據自身的速度變化而變化。

Size Over Lifetime :生命週期粒子大小模組

控制每一顆粒子在其生命週期內的大小變化。

Size by Speed:粒子大小的速度控制

此模組可讓每顆粒子的大小根據自身的速度變化而變化。

Rotation Over Lifetime :生命週期旋轉模組

控制每顆粒子在生命週期內的旋轉速度變化。

Rotation by Speed :旋轉速度控制模組

此模組可讓每顆粒子的旋轉速度根據自身速度的變化而變化。

External Forces:外部作用力模組

此模組可控制風域的倍增係數。

14.Collision:碰撞模組

可為每顆粒子建立碰撞效果,目前只支援平面碰撞,該碰撞對於簡單的碰撞檢測效率非常高。

Sub Emitters:子發射器模組

此模組可時粒子在出生、消亡、碰撞等三個時刻生成其他的粒子。

TextureSheet Animation:序列幀動畫紋理模組

可對粒子在其生命週期內的UV座標產生變化,生成粒子的UV動畫。可以將紋理劃分成網格,在每一格存放動畫的一幀。同時也可以將文理劃分為幾行,每一行是一個獨立的動畫。需要注意的是,動畫所使用的紋理在Renderer模組下的Material屬性中指定。

Renderer:粒子渲染器模組

該模組顯示了粒子系統渲染相關的屬性。

程式碼控制粒子系統發射:

private ParticleSystem _particle;
    private void Awake()
    {
        _particle = GetComponent<ParticleSystem>();
    }
    //播放粒子系統
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Mouse0))
        {
            //播放
            _particle.Play();
        }
        if (Input.GetKeyDown(KeyCode.Mouse1))
        {
            //暫停
            _particle.Pause();
        }
        if (Input.GetKeyDown(KeyCode.Space))
        {
            //停止
            _particle.Stop();
        }
    }