2013年9月8日 星期日

Unity3D 教學 ﹥06 Unity 樹木產生器

http://www.cg.com.tw/Unity/htm/Unity_006.asp

製作遊戲場景時經常需要加入樹木,除了前面介紹的 Unity 種植樹木功能外,也可以使用 Unity 內建的樹木產生器 ( Tree Creator ) 製作各種樹木模型。
提示:若建立專案時沒有匯入樹木產生器的資源包,請點選功能表 [ Import Package > Tree Creator ] 匯入。

點選功能表 [ GameObject > Create Other > Tree ] 就可以在場景檢視中建立樹物件。

預設的樹物件僅有一個樹幹,您可以在屬性檢視器看到 Tree Root Node 樹根節點,稍後我們需要繼續加上樹枝與樹葉。

屬性檢視會以圖形化的方式顯示樹物件的結構,眼睛圖示可以顯示或隱藏此節點。
選取樹幹群組物件時,顯示的圓點代表樹幹結構,選擇移動、旋轉、縮放工具,就可以透過手動的方式進行編輯。

此外,Unity 也提供了自動生成樹木的模式,需要特別注意「手動編輯模式」與「自動生成模式」只能二選一,若您在屬性檢視按下 Convert to procedural group 按鈕,所有的手動編輯結果都會消失,讓樹物件還原到初始的狀態。

Convert To Procedural Group。
選取樹幹群組,按下屬性檢視的「Add Brunch Group」按鈕即可新增樹枝群組。
Frequency = 20∕透過 Distribution 屬性可以調整樹枝的數量與樹枝在樹幹上的分佈情形。
左圖為 Random 隨機分佈,右圖為 Alternate 交叉分佈。

左圖為 Opposite 對向分佈,右圖為 Whorled 螺紋分佈。


Growth Angle 屬性用於設定樹枝的生長角度,左圖為預設值,右圖 Growth Angle = 0.25。

實際上樹枝的生長角度會依樹木的品種而有所不同。

新增樹葉群組
選取樹枝群組,按下屬性檢視的「Add Leaf Group」按鈕即可新增樹葉群組。樹葉的部份在 Scene View 場景檢視只顯示貼圖平面,若想要看到實際遊戲中呈現的結果,可切換到 Game View 遊戲檢視確認。


Plane / Cross
 
TriCross / Billboard
 

預設的樹葉較稀疏,現在稍微修改 Frequency 屬性即可增加樹葉的數量。

試著將 Frequency 增加到 50,是不是看起來比較接近理想的效果呢?


按下「Add Leaf Group」按鈕,就可以增加樹葉群組。
按下「Add Branch Group」按鈕,就可以增加樹枝群組。
Duplicate Selected Group 重製選取的群組」按鈕。

指定樹木材質
先指定樹幹的材質,屬性檢視按下 Branch Material 旁的圓形按鈕,選擇「BigTree_bark」材質。
選擇樹枝群組,接著從屬性檢視 Branch Material 旁的圓形按鈕,選擇「BigTree_bark」材質。
選取樹葉群組,接著從屬性檢視 Material 旁的圓形按鈕,選擇「BigTree_leaves」材質。
增加風區 ( Wind Zone )
選取樹葉群組,並到屬性檢視 按下 Create Wind Zone 按鈕,樹的下方會出現「Wind Zone」圖示。在遊戲檢視模式,就可以看到樹葉隨風搖曳的效果。

Mode 風區模式:可選擇平行 ( Directional ) 或球形 ( Spherical ) 兩種型態。製作自然的風使用平行模式,而需要製作直昇機的螺旋槳氣流,則可選擇球形的模式。
Radius - 20 範圍半徑
Wind Main - 1 風力
Win Turbulence - 1 亂流
Wind Pulse Magnitude - 0.5 幅度
Wind Pulse Frequency - 0.01 頻率


增加碰撞器
玩家操縱的遊戲角色在場景中移動時,撞到樹木時應該是無法繼續前進,現階段進行測試時發現竟然可以穿過樹木,這是缺少碰撞器 ( Collider ) 的關係。
樹木一般使用 Capsule Collider 膠囊形碰撞器。
為樹木增加碰撞器之後,可使用縮放工具將碰撞器調整到適當的大小。
在 Project 專案面板的樹木加上碰撞器時,等於是在預製物件加上元件,因此場景中所有參照此預製物件的樹木,皆會擁有碰撞偵測的功能。
在 Hierarchy 階層面板的樹木加上碰撞器,只會在選取的樹木加上元件,並不會改變場景中的其他樹木。
移除碰撞器
從 Inspector 屬性檢視的 Capsule Collider 捲欄標題,按滑鼠右鍵並選擇「Remove Component」就可以移除碰撞器。