謝韜(四川大學計算機學院,成都 610065)
基于Unity3D粒子系統的游戲特效實現
謝韜
(四川大學計算機學院,成都610065)
近年來,隨著科技的不斷進步,游戲的場景以及特效的制作越來越接近現實,如在現實生活中常見的陽光、雨雪、云霧等天氣因素,火山爆發、地震、海嘯等自然現象以及在戰爭類中子彈的飛行軌跡和震撼的爆炸,等等,這些元素均已加入到虛擬的世界之中,而這些元素的加入不僅可以美化游戲界面加強游戲的觀賞性同時還可以使得游戲玩家們在虛擬的世界中體驗到現實世界中很難經歷的一些景象。為了在游戲中實現這些效果,目前較好的解決辦法便是使用粒子系統。通過Unity3D引擎制作了一個射擊類的游戲,本文側重闡述通過該引擎的粒子系統實現游戲中子彈擊中物體后的爆炸特效。
粒子系統是由W.T.Reeves提出的用來模擬不規則自然景物生成和動畫的技術,也是目前為止用來模擬不規則模糊物體中較成功的圖形生成算法。相比于其他的算法如L系統、分形法構圖等,粒子系統無論是在圖像質量上還是運算代價上面都是比較高的。所以,目前粒子系統已經廣泛的應用于各大3D軟件、游戲引擎之中。粒子系統在總體上會有相同的表現規律,但是對于單獨的個體卻會隨機表現出不同的特征,所以粒子系統的分類是多種多樣的。本文通過粒子的形態將其分為流體粒子、破碎粒子、煙霧粒子等幾類。流體粒子主要用來模擬水的波紋,彈道的飛行軌跡效果,破碎粒子主要用來模擬物體爆炸產生的效果,煙霧粒子主要用來模擬場景的天氣以及景物之類。粒子系統中每個粒子都會擁有一個初始的值,如初始化坐標、初始化速度、初始化粒子大小、當前的角度、后續偏轉角度等等,要完成一個基于粒子系統的特效制作,首先需要確定所要實現的是什么效果,然后根據所需做的東西來確定該粒子系統模型。
Unity3D中的粒子系統由Ellipsoid Particle Emitter(橢圓粒子發射器)、Particle Animator(粒子動畫器)、Particle Renderer(粒子渲染器)三個部分所組成。橢圓粒子發射器是unity用來生成粒子的組件,該模塊定義了粒子隨機的或者固定的大小、速度、顏色、生命周期、發射角度等等屬性來模擬所需要產生的粒子效果,橢圓粒子發射器的坐標便是粒子初始化的坐標。粒子動畫器是將粒子發射器產生的粒子進行二次加工,例如說隨著時間增加粒子的發射速度,改變粒子的旋轉角度,將其顏色不斷變化,粒子的放大或者縮小均需要用到該組件。粒子渲染器在的主要工作是將粒子效果渲染到游戲中,將粒子產生的效果直接顯示在輸出設備上,讓用戶直觀的看到效果,并且這個組件還可以決定粒子的材質、光影。
要制作子彈擊中后的爆炸效果,首先將從3DMax軟件中制作出的子彈模型導入Unity3D中,將該模型制作成prefabs,這樣就可以通過調用Instantiate函數多次使用該模型。然后對子彈模型增加Rigidbody(剛體)組件,這個組件是給子彈加了一個重力效果并使得其具有物理體積能與其他物體發生碰撞。
通過鼠標來控制子彈的發射,其核心代碼如下:

該代碼腳本綁定在主攝像頭上,為了保證發射的子彈出現的坐標在鼠標指針處,先將坐標系統進行轉化,由世界坐標轉為屏幕坐標,調用Input類下的Get-Button方法來響應鼠標事件,再通過Instantiate函數在鼠標位置生成子彈模型,給其賦予一個向前方向的力。
子彈發出后與物體觸碰,為子彈添加剛體組件時就給它默認添加了碰撞檢測器,但是這個僅僅代表有碰撞的體積,為了實現碰撞后產生爆炸的效果,需要為其添加一個碰撞檢測腳本。碰撞檢測代碼如下:


該腳本代碼綁定在子彈模型上,當子彈發射擊中物體后,由OnCollisionEnter函數來判斷是否相觸碰,如果觸碰就調用Destroy函數刪除子彈模型,再調用Instantiate函數在當前位置生成一個名為baozha的粒子效果。
要制作爆炸的粒子效果,首先根據現實中爆炸的效果來確定游戲中粒子的模型。爆炸簡單的來說就是從一個點擴散到一個球面,并附帶火焰。由上,在Unity3D中建立一個名為baozha的粒子系統,從上面對Unity3D粒子系統的解釋中可以知道其包含三個組件,即橢圓粒子發射器、粒子動畫器、粒子渲染器,在每個組件中為其設定所需的參數。因為爆炸是短暫的一個效果,所以需要為其寫一個消亡的腳本,最后給該粒子效果添加音頻組件。
粒子系統界面(如圖1)。
消亡代碼:

直接綁定在名為baozha的粒子系統上,該粒子效果出現一秒后執行刪除操作。
實際效果(如圖2)。
粒子系統越來越趨近于成熟化,在游戲引擎的設計開發中,粒子系統已經開始成為游戲特效實現和場景模擬中至關重要的一部分。目前除了游戲這一塊以外,粒子系統還廣泛的應用于其他行業,如電影制作等等。本文介紹了游戲中爆炸特效的制作,在制作可以應用于射擊類游戲中,在后期將會添加子彈的飛行軌跡特效、敵人AI、計分,等等。

圖1

圖2
[1]宣雨松.Unity3D游戲開發[M].北京:人民郵電出版社,2012.6.
[2]孫家廣,胡事民.計算機圖形學基礎教程[M].北京:清華大學出版社,2005.7.
[3]周愛民.JavaScript語言精髓與編程實踐[M].北京:電子工業出版社,2008.
Unity3D;Particle Systems;Game Effects
Particle System Based Unity3D Game Effects
XIE Tao
(College of Computer Science,Sichuan University,Chengdu 610065)
1007-1423(2015)24-0030-03
10.3969/j.issn.1007-1423.2015.24.008
謝韜(1991-),男,湖南婁底人,在讀碩士研究生,研究方向為圖形圖像
2015-06-30
2015-08-10
近年來,人們對電子游戲的娛樂性需求越來越高,追求更加真實的效果也成為電子游戲發展的大方向,無論是手游還是PC游戲都廣泛用到粒子系統來實現游戲特效和場景模擬。從分析粒子系統的基礎上,通過使用Unity3D引擎上的粒子系統,由理論到實際代碼的編寫來實現游戲中子彈擊中物體后的爆炸效果。
Unity3D;粒子系統;游戲特效
In recent years,people demand entertainment video games become more sophisticated,the pursuit of a more realistic effect has become the general direction of development of video games,both the mobile games and PC games are widely used in the particle system to achieve gaming effects.Based on the analysis from the particle system,by using a particle system on Unity3D engine,from theory to write the actual code of the game to achieve the explosion of the bullet bomb.