Unity3d 粒子光環

2021-08-20 08:32:57 字數 2617 閱讀 9839

這一次做的是用粒子流程式設計做乙個粒子系統,參考了師兄的部落格。

效果展示:

基本配置

首先,開啟unity並建立乙個空的物件,這裡我命名為particalhalo,然後在particalhalo下建立兩個空物件,分別為inner和outer,並為兩個物件新增粒子系統particle system。到這裡,基本的配置就差不多了,接下來就是指令碼的控制了。

指令碼控制

由於兩個空物件inner和outer使用同乙個指令碼控制,因此只用寫乙個指令碼即可。建立指令碼命名為particalhalo.cs。

首先新增粒子系統,粒子陣列以及粒子屬性的陣列:

private particlesystem particlesys;  // 粒子系統  

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

private circleposition circle; //粒子屬性

然後我們從簡單的開始,先定義該粒子屬性的類:

public

class circleposition

}

這個類中定義了每個粒子的半徑,角度,游離的起始時間。這個類會在初始化每個粒子位置時用到。

接下來要定義一堆東西,包括粒子數量,粒子的運動半徑範圍,粒子大小,運動方向等:

public

int count = 10000;

public

float size = 0.06f;

public

float minradius = 5.0f;

public

float maxradius = 12.0f;

public

bool clockwise = true;

public

float speed = 2f;

public

float pingpong = 0.02f; // 游離範圍

public gradient colorgradient;

值得一提的是gradient是unity控制漸變的類,定義乙個類的例項,在之後的光環漸變中用到,這些屬性都定義成public以便於實時調節和設定。

之後可以對粒子系統進行初始化了:

void start ()
這些粒子系統的屬性都可以在ui介面找到,這裡只是用指令碼控制。

然後實現其中的randomlyspread()函式:

for (int i = 0; i < count; ++i)  

particlesys.setparticles(particlearr, particlearr.length);

用極座標控制每個粒子的位置,保證每個粒子在平均半徑附近。

這樣就基本上固定了粒子的位置,大概是乙個圓吧,然後就需要讓每個粒子動起來,繞著圓旋轉,這一步在update中實現:

for (int i = 0; i < count; i++)  

其中

mathf.pingpong(circle[i].time / minradius / maxradius, pingpong) - pingpong / 2.0f;
這段語句保證了粒子可以在最大半徑和最小半徑之間游動,而不必非要繞著環跑。

做到這裡基本上實現了粒子的迴圈跑動:

接下來就是加特效的時間了,這裡我只新增了乙個特效,就是用到上面提及的漸變器讓粒子光環能夠在跑動中變換顏色:

void changecolor () 

}}

這裡呼叫了colorgradient.evaluate (value)這個函式傳入時間來控制顏色的變化,這就要求我們再ui介面編輯漸變器。這裡值得一提的是我將整個圓環分成了100塊,在每一塊中都會出現顏色的漸變達到上面展示的最終效果。當然,這還需要乙個前提就是設定particle system中render中的material為預設的空白材料,不然的話漸變的效果基本沒有。

所以,整個的update為:

void update ()   

changecolor ();

particlesys.setparticles(particlearr, particlearr.length);

}

最後,還可以通過匯入包來新增render中的材料,畢竟unity自帶的材料不太好看就是了。

搞定之後掛載inner和outer物件上就可以了,順時針,逆時針什麼的可以直接在ui介面操作。

Unity3D 粒子光環

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

unity3d學習 粒子光環

摘要 粒子是粒子系統管理的基本單位。一般它是材料 material 材料包含兩個內容,紋理 texture shader,分別負責形態 光照效果 兩個方面。通常,粒子系統包含基礎材料庫供使用者選擇。粒子系統 是模擬一些不確定 流動現象的技術。它採用許多形狀簡單且賦予生命的微小粒子作為基本元素來表示物...

Unity3d 粒子工具注釋

今天群裡有人問到瀑布粒子如何調整尺寸。我查到ellipsoid可以調節產生粒子的空間範圍,然後還需要調節粒子的長度。他那個瀑布太長了。max energy和min energy這兩個引數可以用來控制粒子的最大生命週期,以秒為單位。如果減少這個時間,瀑布的生命周期短,自然就短了。下面列出一些屬性的翻譯...