Unity 3D 粒子系統 粒子流黑洞

2021-08-20 08:12:21 字數 2747 閱讀 6594

step 1. 建立物件

首先建立乙個空物件halo,為它新增乙個particlesystem的元件

step 2. 新增素材

為了弄出星空中黑洞的效果,我們先把背景變黑,開啟window-lighting-settings,在scene視窗下將skybox material設定為default-material即可。另外,我們還要將粒子效果設定為白色發光粒子,在粒子系統元件下的renderer部分可以設定素材為default-material。

step 3. 新建指令碼

接下來我們就進入正題了——即是粒子流的建立與控制。先建立乙個指令碼檔案halo.cs,並掛在物件halo上面。

step 4. 設定變數

為halo類設定私有變數和position的類(用於記錄粒子位置資訊)。parsys是要用到的粒子系統,它由pararr陣列裡的所有粒子構成,另外parpos陣列記錄每乙個粒子的位置。

public

class position

} private particlesystem parsys; // 粒子系統

private particlesystem.particle pararr; // 粒子陣列

private position parpos; // 粒子位置陣列

public

int num = 10000; // 粒子數量

public

float size = 0.03f; // 粒子大小

public

float r = 5f, r = 10f; // 內半徑及外半徑

step 5. 粒子初始化先對每乙個粒子進行初始化,初始化粒子的起始速度、大小、最大數量等等屬性。然後粒子系統就可以發射粒子了!對於每乙個粒子的位置,我使用了乙個setrandom()的函式,使每乙個粒子的起始位置都不一樣,構成乙個圓環。

void start ()
接下來我們要解決粒子隨機分布在圓環上的問題。圓環有內半徑和外半徑,我們可以適當地調整隨機範圍來使大部分粒子落在圓環中心。

void setrandom()

parsys.setparticles(pararr, pararr.length);

// 將所有生成的隨機粒子放入粒子系統裡

}

執行!看看出來的執行結果如何~結果還算是符合預期。

step 6. 粒子流控制

然後就是通過update來更新粒子的狀態,也是關鍵的控制粒子流步驟。我是先調整角度,然後直接使用角度的資料修改每個粒子的position來達到移動的效果。每個粒子的速度每個時刻均是隨機產生,各不相等。

void update () 

parsys.setparticles(pararr, pararr.length);

}

這下我們來看下執行效果,感覺還可以。

step 7. 新增第二個光環

再新建乙個空物件halo2,並新增particlesystem的元件。設定跟halo物件一樣,只是掛的指令碼不一樣。在halo2.cs的指令碼中,對halo.cs略作修改,具體修改地方有:

// 修改小環的內外半徑

public

float r = 4f, r = 5f; // 內半徑及外半徑

//......

// 初始化粒子的位置,為豎立的圓環

pararr[i].position =

new vector3(parpos[i].radius * mathf.cos(radian),

parpos[i].radius * mathf.sin(radian),

0f);

//......

// 同理,更新未知的時候亦是

pararr[i].position = new vector3(parpos[i].radius * mathf.cos(radian),

parpos[i].radius * mathf.sin(radian),

0f);

這時的執行效果是這樣的。

step 8. 調整光環效果(加特效)這時再看執行效果,大功告成!!(好好看啊哈哈哈)

Unity3D舊粒子系統屬性

粒子系統是每個引擎都必須具備的,如果缺乏粒子系統,對於引擎將會帶來重要影響。unity3d的粒子系統也同樣相當的強大,現將unity3d粒子系統的部分屬性做如下整理。ellipsoid particle emitter min max size 每個粒子的半徑大小隨機範圍 越大每個粒子就越大,整個粒...

粒子系統 3D粒子

你現在可能已經知道了,2d和3d在godot中是彼此的映象。凡是2d中存在的節點,在3d中也存在。所以,自然而然地,particles2d節點有乙個3d的替代品,叫做particles節點。particles節點會發出3d粒子。它不需要紋理,而是需要乙個網格。然而,如果你在屬性中檢視,你會發現不是乙...

Unity3D 粒子光環

先在介面中加入乙個空白物件,增加兩個子物件,子物件下新增粒子系統 在旁邊的inspector中,由於default particle的亮度挺低的 雖然現在的也挺低的 我在asset store中匯入了新的乙個粒子包,設定了粒子 首先在指令碼中定義一些需要用到的資料 private particles...