1. 程式人生 > >Unity3D 5 官方教程:粒子系統

Unity3D 5 官方教程:粒子系統

在一個3D遊戲中,大部分角色、道具和場景元素是用“網格”(Mesh)來表現的;而一個2D遊戲用“精靈”(sprite)來實現。網格和精靈都是理想的方式來描述形狀被完善定義的“固態”物件。然而遊戲裡有另外的實體,是流動的、在自然中難以觸及的,因而使用網格或精靈來描述。對於像流動液體、煙、雲、火焰和魔咒的效果,名為“粒子系統”的不同方法可以被用來捕捉內在的流動性和能量。本部分解釋Unity的粒子系統,以及他們可以用來做什麼。

什麼是粒子系統?

粒子,是被一個粒子系統以巨大數量顯示和移動的,微小、簡單的影象或者網格。每個粒子代表一個流動的或者模糊的實體的一小部分,所有粒子的效果共同形成了完整實體的效果。用一個煙雲作為例子,每個粒子將有一個小的煙紋理,就像在它裡面有一個微小的雲。當許多這樣迷你雲被一起放在場景的一個區域中,整體效果是一個更大的、大體積的雲。

系統的動態性

每個粒子有一個預先已經決定的存在期,通常是若干秒,在這期間它可以經歷各種變化。當它被它的粒子系統生成或發射時,它開始了自己的存在期。系統在一個形狀像球體、半球體、圓錐體、盒子或者任何任意網格的空間區域中隨機的位置發射粒子。粒子被顯示,直到它存在期結束,被從系統中移除。系統的發射率(emission rate)指明大體上每秒有多少粒子被髮射,儘管精確的發射時間被輕微地隨機。對發射率和平均粒子存在期的選擇,決定了在“穩定”狀態下粒子的數量(此時粒子的發射和消亡速率相同),以及系統要花多長時間達到這個狀態。

粒子的動態性

發射和存在期設定影響了系統的整體行為,但單個粒子也可以隨著時間而改變。每個粒子有一個速度向量,決定了在每次幀更新時粒子移動的方向和距離。當受到力或系統自身應用的重力,或者當粒子被地形中的風區所吹拂,速度可以被改變。每個粒子的顏色、尺寸和旋轉也可以在存在期內改變,或者按當前比例改變移動速度。顏色包括了一個alpha(透明度)元件,這樣一個粒子可以有淡入/淡出的存在效果,而不是簡單地突然出現和消失。
結合地使用,粒子動態可以被相當方便地用來模擬很多種流體效應。例如,一個瀑布可以用一個細長的發射器形狀模擬,並讓水粒子簡單地在重力作用下跌落。來自火焰的煙趨於上升、擴散、最後消散,那麼系統應當使用一個向上的力作用在煙粒子上,並在它們的存在期內增加它們的尺寸和透明度。

Using Particle Systems in Unity

Unity用一個元件實現粒子系統,所以在場景中放置一個(粒子)系統,只要新增一個預製物件(選單:GameObject->Create General->Particle System)或將元件新增到已有物件(選單:Component->Effects->Particle System)。由於這個元件相當複雜,檢視器被分為若干個可以摺疊的子區域或模組,它們各自包含了一組相關的屬性。另外,通過在檢視器上的Open Window按鈕進入分開的編輯視窗,你可以同時編輯一個或多個系統。粒子系統元件中大量可用的選項,在元件和單個模組的參考頁中給出了細節描述。
當一個帶有粒子系統的物件被選中,場景檢視將包含一個有一些簡單的控制小型粒子效果面板,有助於檢視對粒子系統設定改變的效果。
這裡寫圖片描述


Playback Speed允許你加快或放慢粒子模擬,這樣你可以快速看到它在高階狀態下的形態。Playback Time指明從粒子系統被啟動後消逝的時間;依賴於playback speed,這可以比現實時間快或慢。Particle Count指明系統當前有多少個粒子。通過點選Playback Time標籤並向左右滑動滑鼠,playback time可以被倒回或快進。面板頂端的按鈕用來暫停和繼續模擬,或者停止並重置為初始狀態。

隨時間變更屬性

許多粒子甚至整個系統的數值類屬性,可以隨時間而變化。Unity提供了幾種不同的辦法來指定變化的發生:
常數:屬性值在整個生存期都為固定值。
曲線:用一個曲線/圖來指定值。
在兩個常數間隨機:兩個常數定義了值的上下邊界;實際值在兩個邊界之間歲時間而隨機改變。
在兩個曲線間隨機:兩個曲線定義了,在生存期中一個給定點,數值的上下界;當前值在這兩個邊界之間隨機變化。
對於顏色屬性,如Color over lifetime,有兩個不同選項:
梯度:顏色值取自梯度。
在兩個梯度間隨機:兩個梯度曲線定義了顏色值在給定時間的上下邊界;取值為兩個邊界顏色的隨機權重平均值。