謝韜(四川大學(xué)計算機(jī)學(xué)院,成都 610065)
基于Unity3D粒子系統(tǒng)的游戲特效實(shí)現(xiàn)
謝韜
(四川大學(xué)計算機(jī)學(xué)院,成都610065)
近年來,隨著科技的不斷進(jìn)步,游戲的場景以及特效的制作越來越接近現(xiàn)實(shí),如在現(xiàn)實(shí)生活中常見的陽光、雨雪、云霧等天氣因素,火山爆發(fā)、地震、海嘯等自然現(xiàn)象以及在戰(zhàn)爭類中子彈的飛行軌跡和震撼的爆炸,等等,這些元素均已加入到虛擬的世界之中,而這些元素的加入不僅可以美化游戲界面加強(qiáng)游戲的觀賞性同時還可以使得游戲玩家們在虛擬的世界中體驗(yàn)到現(xiàn)實(shí)世界中很難經(jīng)歷的一些景象。為了在游戲中實(shí)現(xiàn)這些效果,目前較好的解決辦法便是使用粒子系統(tǒng)。通過Unity3D引擎制作了一個射擊類的游戲,本文側(cè)重闡述通過該引擎的粒子系統(tǒng)實(shí)現(xiàn)游戲中子彈擊中物體后的爆炸特效。
粒子系統(tǒng)是由W.T.Reeves提出的用來模擬不規(guī)則自然景物生成和動畫的技術(shù),也是目前為止用來模擬不規(guī)則模糊物體中較成功的圖形生成算法。相比于其他的算法如L系統(tǒng)、分形法構(gòu)圖等,粒子系統(tǒng)無論是在圖像質(zhì)量上還是運(yùn)算代價上面都是比較高的。所以,目前粒子系統(tǒng)已經(jīng)廣泛的應(yīng)用于各大3D軟件、游戲引擎之中。粒子系統(tǒng)在總體上會有相同的表現(xiàn)規(guī)律,但是對于單獨(dú)的個體卻會隨機(jī)表現(xiàn)出不同的特征,所以粒子系統(tǒng)的分類是多種多樣的。本文通過粒子的形態(tài)將其分為流體粒子、破碎粒子、煙霧粒子等幾類。流體粒子主要用來模擬水的波紋,彈道的飛行軌跡效果,破碎粒子主要用來模擬物體爆炸產(chǎn)生的效果,煙霧粒子主要用來模擬場景的天氣以及景物之類。粒子系統(tǒng)中每個粒子都會擁有一個初始的值,如初始化坐標(biāo)、初始化速度、初始化粒子大小、當(dāng)前的角度、后續(xù)偏轉(zhuǎn)角度等等,要完成一個基于粒子系統(tǒng)的特效制作,首先需要確定所要實(shí)現(xiàn)的是什么效果,然后根據(jù)所需做的東西來確定該粒子系統(tǒng)模型。
Unity3D中的粒子系統(tǒng)由Ellipsoid Particle Emitter(橢圓粒子發(fā)射器)、Particle Animator(粒子動畫器)、Particle Renderer(粒子渲染器)三個部分所組成。橢圓粒子發(fā)射器是unity用來生成粒子的組件,該模塊定義了粒子隨機(jī)的或者固定的大小、速度、顏色、生命周期、發(fā)射角度等等屬性來模擬所需要產(chǎn)生的粒子效果,橢圓粒子發(fā)射器的坐標(biāo)便是粒子初始化的坐標(biāo)。粒子動畫器是將粒子發(fā)射器產(chǎn)生的粒子進(jìn)行二次加工,例如說隨著時間增加粒子的發(fā)射速度,改變粒子的旋轉(zhuǎn)角度,將其顏色不斷變化,粒子的放大或者縮小均需要用到該組件。粒子渲染器在的主要工作是將粒子效果渲染到游戲中,將粒子產(chǎn)生的效果直接顯示在輸出設(shè)備上,讓用戶直觀的看到效果,并且這個組件還可以決定粒子的材質(zhì)、光影。
要制作子彈擊中后的爆炸效果,首先將從3DMax軟件中制作出的子彈模型導(dǎo)入Unity3D中,將該模型制作成prefabs,這樣就可以通過調(diào)用Instantiate函數(shù)多次使用該模型。然后對子彈模型增加Rigidbody(剛體)組件,這個組件是給子彈加了一個重力效果并使得其具有物理體積能與其他物體發(fā)生碰撞。
通過鼠標(biāo)來控制子彈的發(fā)射,其核心代碼如下:
該代碼腳本綁定在主攝像頭上,為了保證發(fā)射的子彈出現(xiàn)的坐標(biāo)在鼠標(biāo)指針處,先將坐標(biāo)系統(tǒng)進(jìn)行轉(zhuǎn)化,由世界坐標(biāo)轉(zhuǎn)為屏幕坐標(biāo),調(diào)用Input類下的Get-Button方法來響應(yīng)鼠標(biāo)事件,再通過Instantiate函數(shù)在鼠標(biāo)位置生成子彈模型,給其賦予一個向前方向的力。
子彈發(fā)出后與物體觸碰,為子彈添加剛體組件時就給它默認(rèn)添加了碰撞檢測器,但是這個僅僅代表有碰撞的體積,為了實(shí)現(xiàn)碰撞后產(chǎn)生爆炸的效果,需要為其添加一個碰撞檢測腳本。碰撞檢測代碼如下:
該腳本代碼綁定在子彈模型上,當(dāng)子彈發(fā)射擊中物體后,由OnCollisionEnter函數(shù)來判斷是否相觸碰,如果觸碰就調(diào)用Destroy函數(shù)刪除子彈模型,再調(diào)用Instantiate函數(shù)在當(dāng)前位置生成一個名為baozha的粒子效果。
要制作爆炸的粒子效果,首先根據(jù)現(xiàn)實(shí)中爆炸的效果來確定游戲中粒子的模型。爆炸簡單的來說就是從一個點(diǎn)擴(kuò)散到一個球面,并附帶火焰。由上,在Unity3D中建立一個名為baozha的粒子系統(tǒng),從上面對Unity3D粒子系統(tǒng)的解釋中可以知道其包含三個組件,即橢圓粒子發(fā)射器、粒子動畫器、粒子渲染器,在每個組件中為其設(shè)定所需的參數(shù)。因?yàn)楸ㄊ嵌虝旱囊粋€效果,所以需要為其寫一個消亡的腳本,最后給該粒子效果添加音頻組件。
粒子系統(tǒng)界面(如圖1)。
消亡代碼:
直接綁定在名為baozha的粒子系統(tǒng)上,該粒子效果出現(xiàn)一秒后執(zhí)行刪除操作。
實(shí)際效果(如圖2)。
粒子系統(tǒng)越來越趨近于成熟化,在游戲引擎的設(shè)計開發(fā)中,粒子系統(tǒng)已經(jīng)開始成為游戲特效實(shí)現(xiàn)和場景模擬中至關(guān)重要的一部分。目前除了游戲這一塊以外,粒子系統(tǒng)還廣泛的應(yīng)用于其他行業(yè),如電影制作等等。本文介紹了游戲中爆炸特效的制作,在制作可以應(yīng)用于射擊類游戲中,在后期將會添加子彈的飛行軌跡特效、敵人AI、計分,等等。
圖1
圖2
[1]宣雨松.Unity3D游戲開發(fā)[M].北京:人民郵電出版社,2012.6.
[2]孫家廣,胡事民.計算機(jī)圖形學(xué)基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2005.7.
[3]周愛民.JavaScript語言精髓與編程實(shí)踐[M].北京:電子工業(yè)出版社,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-),男,湖南婁底人,在讀碩士研究生,研究方向?yàn)閳D形圖像
2015-06-30
2015-08-10
近年來,人們對電子游戲的娛樂性需求越來越高,追求更加真實(shí)的效果也成為電子游戲發(fā)展的大方向,無論是手游還是PC游戲都廣泛用到粒子系統(tǒng)來實(shí)現(xiàn)游戲特效和場景模擬。從分析粒子系統(tǒng)的基礎(chǔ)上,通過使用Unity3D引擎上的粒子系統(tǒng),由理論到實(shí)際代碼的編寫來實(shí)現(xiàn)游戲中子彈擊中物體后的爆炸效果。
Unity3D;粒子系統(tǒng);游戲特效
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.