使用粒子系統(Particle System) 製作 2D 煙霧效果
首先需要一張煙霧圖片,這邊使用 Photopea 來製作做煙霧圖片,
進入 Photopea 後,選擇 檔案
-> 新增
, 會彈出新增專案畫面。
- 將寬高設定為 512 像素 。
- DPI 設為 100 像素/Inch 。
- 背景選擇白色。
選擇 檢視
-> 顯示
-> 格線
。啟用格線,方便我們之後對齊
選擇 編輯
-> 選項
打開選項畫面,調整格線大小,由於 寬高是 512 ,我們想要切為四等分,因此設定網格間隙為 512 / 4 = 128
接著選擇 濾鏡
-> 渲染
-> 雲彩
。 建立一個雲霧的圖片
再建立一個新專案,寬高一樣是 512 , 但是這次背景選 透明
回到有雲彩圖片的專案,選擇套索工具,羽化設為 20
px , 使用 套索工具 切出煙霧圖案
按下 ctrl
+ c
將切出的圖案複製 , 切換到 背景透明
的專案,按下 ctrl
+ v
貼上。可以使用移動工具,移動煙霧圖片,對齊中心。 如下圖:
最後,輸出煙霧圖片為 PNG
至此,我們的煙霧圖片就準備完畢了。
接著到 Unity 編輯器中。將煙霧圖片複製到裡面
建立一個 Material,命名為 SmokeMaterial
將 SmokeMaterial 的 Shader 更改為 Particles/Unlit
- 將
Surface Type
設為 Transparent 。設為透明。 - 將
Surface Inputs
中Base Map
設為剛剛的煙霧圖片。
建立一個 GameObject ,命名為 Smoke
。接著在這個物件下建立一個 Particle System , 命名為 Smoke Particle System
。
以下開始設定 Smoke Particle System ,
Transform 組件
- 預設噴射方向是朝 Z 軸方向噴射,由於是 2D 遊戲,我們將其 Rotation 的 X 設為 -90 , 讓粒子系統朝 Y 軸方向噴射,在畫面上會呈現朝上噴射。
修改以下模組
主模組
Start Life Time
: 設為 Random Between Two Constants, 2 和 5Start Speed
:設為 Random Between Two Constants, 3 和 4Start Rotation
:設為 Random Between Two Constants, -180 和 180Scaling Mode
: Hierarchy 。 讓粒子系統可以直接隨父級物件縮放。
Emission 模組
Rate over Time
: 40 。 每秒生成的40個粒子。
Shape 模組
Shape
: Cone 。
Color over Lifetime 模組
- 開始時顏色為白色且透明,逐漸變得不透明,然後變為黑色並再次變透明,模擬煙霧散去的效果。
Texture Sheet Animation 模組
Mode
: Grid 。確保煙霧圖片已經被切割為 2×2 的動畫格,這樣才能正確使用 Grid 模式來播放動畫。Tile
: 圖片是 4 個,因此 X, Y 設為 2X
: 2Y
: 2
Animation
: Whole Sheet 。 整張圖片Time Mode
: LifeTimeFrame over Time
: 選擇 Random Between Constants , 數字填 0 和 3
Renderer 模組
Material
: 更改為上面建立的 SmokeMaterial
最後效果如圖