這一次做的是用粒子流程式設計做乙個粒子系統,參考了師兄的部落格。
效果展示:
基本配置
首先,開啟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這兩個引數可以用來控制粒子的最大生命週期,以秒為單位。如果減少這個時間,瀑布的生命周期短,自然就短了。下面列出一些屬性的翻譯...