(喀什大學 計算機科學與技術學院,新疆 喀什 844000)
Unity 3D 是一款新型的功能強大、相對成熟的交互式游戲引擎[1],其具備簡潔的圖形化界面和完善的游戲引擎插件,有強大的UGUI和多平臺、跨平臺特性,其內置的Nvidia 公司的PhysX 物理引擎可模擬剛體碰撞、粒子模擬、重力等物理效果[2],使得對象物體具備質量、摩擦力等物理屬性,提供給了游戲開發者一個可視化的編輯窗口.
為增加單機版拾金幣游戲的趣味性,本實驗在傳統的拾金幣游戲基礎上增加了銀幣預制體,設計并實現了在指定區域隨機產生金幣和銀幣、計分、碰撞時產生粒子功能這三個游戲效果.
(1)指定區域隨機產生指定個數的金幣、銀幣.為了避免玩家在沒有開始游戲時和隨機產生的游戲對象發生碰撞效果,在指定區域內隨機生成玩家設置的金幣、銀幣數量.
(2)計分功能.為了增加游戲的趣味性,玩家控制小球碰撞到金幣、銀幣時,總分增加,血量增加;玩家控制小球碰撞到墻壁,總分減少,血量相應減少,累計減分到0 分,游戲停止并在當前場景顯示“Game Over”.
(3)粒子功能.小球碰撞到金幣、銀幣實現拾取,金幣、銀幣消失的同時產生爆炸粒子效果.
(1)搭建好實驗中所需場景.創建四個cube,調整大小、位置并圍成墻體,打組,設置tag 為qiang.創建一個Sphere 作為小球,調整到墻體右下角.再創建一個Sphere,調整Sphere 的大小、形狀、顏色,設置tag 為GoldMoney,并拖放到prefabs 中命名為Golden Prefabs,Ctrl+d 復制一份,修改顏色,設置tag 為SilverMoney,命名為Silver prefabs.
(2)在當前主場景新建一個Cube 對象,用來限定游戲對象生成的區域并將創建游戲對象腳本CreatMoney 掛載到指定游戲對象生成的區域Cube 對象上,在Cube 對象的Inspector 視圖中1中設置Sliver Prefabs、Golden Prefabs 為相應的預制體,輸入初始金幣、銀幣個數.

圖1 Cube 對象的Inspector 視圖
(3)主場景添加UGUI界面.Unity中的UGUI 系統容許用戶快速直觀地創建圖形用戶界面,利用UGUI 創建Canvas、Text、Image 控件來實現系統的計分功能,Slider 實現系統的血條效果[3]87-110.拾取金幣、銀幣時,金幣、銀幣消失,產生粒子爆炸效果,計分和血條量增加;碰撞到墻體時,計分和血條量減少.Text 中顯示當前累計分值,當分值減少為0 時,顯示“game over”.
2.2.1 在指定區域創建游戲對象
在Unity 3D 當中,為了避免資源的浪費,快速復制出反復使用的游戲對象,利用Clone 技術,在指定區域隨機產生指定個數的金幣、銀幣,并掛載到指定區域Cube 對象上.以產生金幣為例,設置金幣個數goldenMoneyCount 訪問修飾符為public,可以實現在屬性面板上輸入指定隨機產生的個數,編寫產生金幣腳本CreatMoney.cs,實現代碼如下:

2.2.2 計分功能實現
玩家通過按取鍵盤上相應按鈕來實現小球的向上、向下、向左、向右四個方向的移動操作,血條health 初始值設為100.此案例中小球運行時,碰撞到金幣,碰撞一個金幣總分加10分,碰撞到銀幣,碰撞一個銀幣總分加5 分,同時血條量增加相應分值;當小球運行碰撞到墻體時,碰撞一次墻體總分減10 分且血條量減少相應分值,當總分累計減少到0 分時,全局結束,游戲中止運行并在當前場景中顯示“GameOver”.如圖2 和圖3 所示.

圖2 游戲運行效果圖

圖3 游戲結束效果圖
編寫拾取金幣腳本EatMoney.cs,掛載到小球Sphere 上,實現計分的部分代碼如下:

2.2.3 粒子效果實現
Unity 3D 內嵌的Shuriken 粒子系統的模塊化管理,個性化的粒子模塊配合粒子曲線編輯器,使設計人員能方便高效地創作出各種繽紛復雜的粒子效果[3]113-125.為了實現拾取金幣時金幣產生的消失爆炸特效,在當前場景創建粒子對象Particl Systm,縮小半徑,賦值為0.01,修改形狀和設置生命周期速度,完成初始化的修改.在當前場景定義一個粒子游戲對象obj1.將此粒子對象修改為金幣、銀幣的子對象,該實驗中當父對象被銷毀時,子物體也同時被銷毀,增加了游戲視覺上的直觀性.
將腳本添加到拾取金幣腳本EatMoney.cs中,部分代碼如下:

本文應用Unity 3D 游戲引擎開發的單機版拾金幣游戲,在傳統經典拾金幣游戲的基礎上,增加了銀幣預制體,通過測試,實現了在指定區域隨機產生金銀幣、UGUI 界面的計分和血條增減、拾取金幣銀幣時產生粒子效果并爆炸消失等三個游戲效果,經測試達到了預期效果.