第 七 章 分 子 特 效 應 用 系 統 所 提 供 的 分 子 特 效 可 由 Assets/Import Package/Particles 載 入 載 入 後 的 分 子 特 效 (particles) 藏 於 Standard Assets 中, 分 子 特 效 包 含 沙 塵 (Dust) 火 燄 (Fire) Legacy Particles 混 合 (Misc) 煙 霧 (Smoke) Sources Sparkles 水 (Water) 等 系 統 提 供 的 分 子 特 效 7.1 水 分 子 特 效 系 統 提 供 的 水 分 子 特 效 有 三 種, 噴 水 (Water Foundation) 水 表 面 特 效 (Water Surface Splash) 與 瀑 布 (WaterFall) 7.1.1 製 作 瀑 布 選 擇 WaterFall 拖 曳 場 景 中,WaterFall 內 含 橢 圓 形 分 子 發 射 器 (Ellipsoid Particle Emitter) 分 子 動 畫 產 生 器 (Particle Animator) 與 分 子 渲 染 器 (Particle Render)
分 子 渲 染 器 所 用 的 貼 圖 內 建 在 Textures 目 錄 中 名 為 foam 的 一 張 水 分 子 貼 圖 調 整 瀑 布 中 心 點 放 置 在 山 壁 上, 調 整 橢 圓 形 分 子 發 射 器 以 下 參 數 Local Velocity(x=-20,y=0,z=0) 瀑 布 射 出 方 向 為 負 x 軸 方 向, 射 出 距 離 為 20 公 尺 Ellipsoid(x=1,y=2,z=20) 表 示 發 射 器 大 小 為 (1,2,20)
瀑 布 的 顯 示 畫 面 如 下 圖
7.1.2 製 作 噴 水 池 將 Water Foundation 拖 曳 至 場 景 中, 放 置 在 一 塊 窪 地 內 Water Foundation 與 WaterFall 相 似, 內 含 橢 圓 形 分 子 發 射 器 (Ellipsoid Particle Emitter) 分 子 動 畫 產 生 器 (Particle Animator) 與 分 子 渲 染 器 (Particle Render) 調 整 橢 圓 形 分 子 發 射 器 的 參 數 如 下 表 : Local Velocity(x=0,y=12,z=0) 噴 水 池 向 上 噴 發 12 公 尺 Tangent Velocity(x=0.2,y=1,z=-0.1) 噴 水 的 向 外 的 速 度 為 x=0.2, 向 上 的 速 度 為 1, 向 下 掉 落 的 速 度 為 0.1 調 整 Tangent Velocity 的 參 數 值 就 可 以 調 整 水 柱 噴 發 的 速 度, 若 要 使 水 柱 向 周 圍 噴 發, 可 以 調 整 x 值,x 值 愈 大 則 水 柱 開 花 愈 大
水 柱 顯 示 結 果 如 下 圖 7.1.3 製 作 水 紋 將 Water Surface Splash 拖 曳 至 場 景 中, 放 置 在 一 塊 窪 地 內 與 Water Foundation WaterFall 相 似, 內 含 橢 圓 形 分 子 發 射 器 (Ellipsoid Particle Emitter) 分 子 動 畫 產 生 器 (Particle Animator) 與 分 子 渲 染 器 (Particle
Render) Ellipsoid Particle Emitter 中 關 鍵 的 參 數 設 定 為 Tangent Velocity(x=0,y=0,z=1.032142), 表 示 分 子 只 會 向 週 圍 水 平 噴 發 噴 發 的 動 畫 產 生 器 採 用 透 明 漸 進 的 方 式 展 現 所 以 呈 現 的 結 果 如 下 圖 所 示 由 於 這 水 紋 放 置 在 窪 地 之 中, 所 以 噴 發 後 的 分 子 將 受 到 窪 地 邊 界 的 限 制 使 得 噴 發 只 會 充 滿 在 這 窪 地 之 內
7.2 製 作 碰 撞 沙 塵 暴 建 立 兩 個 空 的 GameObject 並 加 入 Box Collider, 命 名 為 StartDustCollider 與 StopDustCollider 從 分 子 系 統 中 拖 曳 新 增 一 個 Dust Storm 來 做 沙 塵 暴 的 效 果 StartDustCollider 做 為 觸 發 沙 塵 暴 的 碰 撞 點 StopDustCollider 做 為 結 束 沙 塵 暴 的 碰 撞 點 擺 設 如 下 圖 將 Dust Storm 擺 設 在 StartDustCollider 與 StopDustCollider 之 間
調 整 Ellipsoid Particle Emitter 如 下, 其 中 將 Emit 設 定 為 False, 意 謂 一 開 始 不 會 噴 發 沙 塵 分 子, 再 將 最 大 噴 發 能 量 Max Energy 設 定 為 10, 最 大 噴 發 量 Max Emission 設 定 為 100, 噴 發 速 度 比 例 Emitter Velocity Scale 提 高 到 100 噴 發 範 圍 Ellipsoid 調 整 為 X=30, Z=30
為 了 讓 噴 發 的 沙 塵 粒 子 看 似 沙 子 因 此 調 整 Tint Color 如 下 圖, 調 整 顏 色 與 透 明 度 我 們 在 StartDustCollider 上 新 增 一 項 動 作 腳 本 StartDustScript 宣 告 Dust 變 數 與 Dust Storm 做 連 結, 在 OnTriggerEnter 函 式 中 偵 測 碰 撞, 若 發 現 碰 撞 物 為 player 標 籤 的 遊 戲 物 件 便 將 Dust Storm 發 射 啟 動 var Dust:ParticleEmitter; function OnTriggerEnter (other:collider) { if(other.tag=="player") { Dust.emit=true; } } 同 理 在 StopDustCollider 也 新 增 一 項 動 作 腳 本 StopDustScript 做 以 上 的 相 同 設 定, 當 偵 測 boy 踩 到 此 StopDustCollider 時 便 將 Dust.emit 設 定 為 false 將 其 關 閉 var Dust:ParticleEmitter; function OnTriggerEnter (other:collider) { if(other.tag=="player") { Dust.emit=false; } } 7.3 新 增 速 度 彩 帶 (Trail Render) 在 boy 角 色 下 新 增 兩 個 空 GameObject 命 名 為 LeftTrailer 與 RightTrailer 放 置 在 角 色 的 左 右 手 臂 旁
由 於 LeftTrailer 與 RightTrailer 已 歸 屬 為 boy 的 子 物 件, 因 此, 我 們 只 要 將 LeftTrailer 設 定 為 X=-2,Y=2,Z=4 就 會 落 在 左 臂 的 位 置, 將 RightTrailer 設 定 為 X=2,Y=2,Z=4 就 會 落 在 右 臂 的 位 置 新 增 元 件 Component/Particles/Trail Render 至 LeftTrailer 與 RightTrailer 上 選 擇 Project/Standard Assests/Particles/Sources/Marterials/Fairy Dust 材 質 將 其 套 用 在 Trail Render 上 Trail Render 的 Materials 設 定 為 Fairy Dust 做 為 渲 染 的 材 質 後, 調 整 Time 為 1 秒 秒 數 越 小, 速 度 彩 帶 受 到 速 度 的 影 響 越 小
遊 戲 執 行 時 速 度 彩 帶 顯 示 如 下, 此 彩 帶 會 依 據 速 度 的 大 小 產 生 拖 曳 現 相 可 美 化 遊 戲 速 度 感
7.4 製 作 可 碰 撞 障 礙 物 先 準 備 兩 種 貼 圖, 一 種 為 木 質 貼 圖 ; 另 一 種 為 石 質 貼 圖 在 Project/Materials 下 按 右 鍵 選 擇 Create/Material 新 增 兩 種 材 質 將 此 材 質 分 別 命 名 為 wood 與 stone 兩 種 Stone 材 質 選 取 stone.jpg 貼 圖 ;wood 材 質 選 取 wood.jpg 貼 圖
使 用 GameObject/Create other/cube 新 增 一 個 Cube 遊 戲 物 件 將 此 遊 戲 物 件 更 名 為 WoodBox, 並 將 其 Mesh Render/Materials 更 新 為 Wood 材 質
將 其 大 小 放 大 4 倍 置 於 boy 之 前, 做 為 障 礙 物 此 時 若 執 行 遊 戲 會 發 生 木 箱 阻 礙 boy 前 進,boy 將 無 法 推 動 木 箱 我 們 選 擇 WoodBox 將 其 上 使 用 Component/Physics/Rigidbody 新 增 Rigidbody
執 行 遊 戲 發 現 boy 可 以 推 動 木 箱 由 於 木 箱 比 較 輕, 我 們 將 Rigidbody/mass 設 定 為 0.01 這 樣 遊 戲 進 行 時 會 很 容 易 將 木 箱 推 開 以 相 同 的 方 式 也 製 作 一 個 石 箱, 其 重 量 設 定 為 1 我 們 將 這 兩 個 箱 子 並 排 放 在 角 色 之 前, 如 下 圖 所 示
遊 戲 進 行 碰 撞 之 後, 可 以 發 現 因 為 木 箱 比 較 輕, 所 以 被 推 往 前, 石 箱 則 留 在 原 地 不 遠 處 7.5 製 作 可 碰 撞 障 礙 物 專 案 元 件 (Prefab) 在 上 一 節 中 使 用 的 障 礙 物 木 箱 與 石 箱 在 場 景 中 的 使 用 率 很 高, 若 是 將 其 轉 為 專 案 元 件 後, 除 了 可 以 在 場 景 中 重 覆 拖 曳 新 增 外, 也 可 以 匯 出 給 其 他 專 案 使 用 使 用 Create/Prefab 產 生 兩 個 專 案 元 件, 將 其 命 名 為 WoodBox 與 StoneBox
將 Hierachy/WoodBox 拖 拉 至 Environment/WoodBox, 此 時 WoodBox 專 案 元 件 就 變 成 為 WoodBox 完 全 相 同 的 屬 性 同 樣 的 動 作 做 在 StoneBox 中, 將 Hierachy/StoneBox 拖 拉 至 Environment/SoneBox, 此 時 StoneBox 專 案 元 件 就 變 成 為 StoneBox 完 全 相 同 的 屬 性
選 擇 Project/Environment/WoodBox 按 下 滑 鼠 右 鍵 跳 出 彈 跳 視 窗 選 單, 選 取 Export Package 可 將 WoodBox 匯 出 為 套 件 供 其 他 專 案 使 用 跳 出 準 備 匯 出 交 談 窗
按 下 Export 跳 出 選 擇 目 標 路 徑 交 談 窗, 寫 下 檔 名 為 WoodBox 打 開 檔 案 總 管 可 以 發 現 新 增 一 個 WoodBox 套 件 檔 案, 可 供 其 它 專 案 匯 入 使 用