王麗
摘 要:教育游戲的出現(xiàn),極大的改變了學生的學習方式,學生可以通過教育游戲?qū)蕵放c學習結(jié)合起來,提高學習興趣和效率。文章利用3ds Max建立三維游戲場景和道具,使用Unity3D作為開發(fā)平臺,以JavaScript作為開發(fā)語言,設(shè)計并實現(xiàn)了一個中學數(shù)學概率學習的三維游戲。
關(guān)鍵詞:游戲;建模;Unity3D
中圖分類號:G434 文獻標志碼:A 文章編號:1673-8454(2016)08-0068-04
一、引言
學生是有個性差異的,課堂教學無法滿足每個學生的學習需求,但通過教育游戲卻可以實現(xiàn)因材施教。教育游戲可將游戲任務(wù)按照難易程度劃分等級,使每個學生可以根據(jù)自己的學習情況選擇適合的等級,制定自己的學習進度,自主學習能力也得到了提升[1]。此外,教育游戲還具有很強的挑戰(zhàn)性、互動性和趣味性,可以激發(fā)學生強烈的求知欲和學習動機[2]。學生利用教育游戲進行學習,不僅可以鞏固已學的知識,拓展知識面,還能提高想象力。教育游戲還有助于培養(yǎng)學生正確的人生觀和價值觀。
文章利用3ds Max建立三維游戲場景和道具,以Unity3D為開發(fā)環(huán)境,JavaScript為開發(fā)語言設(shè)計并實現(xiàn)了一個中學概率學習游戲。讓學生體驗游戲刺激的同時,可以通過回答問題來學習、鞏固概率知識,使學習不再枯燥,讓學生快樂學習,愛上學習,提高學習效率。
二、游戲開發(fā)流程
首先,根據(jù)學習目標設(shè)計學習內(nèi)容和游戲流程,接著利用3ds Max建立模型、為模型賦予材質(zhì);然后將文件導入Unity3D中進行游戲的開發(fā),內(nèi)容包括碰撞檢測、動畫設(shè)置、添加特效、布置燈光、添加音樂、人機交互設(shè)置六大部分;最后進行優(yōu)化系統(tǒng),導出為可執(zhí)行文件。游戲的開發(fā)流程如圖1所示。
三、游戲設(shè)計與實現(xiàn)
1.設(shè)計思想
此游戲?qū)儆诿苁医庵i類游戲,游戲場景的部分結(jié)構(gòu)圖如圖2所示。整個密室由一個個小密室組合而成。當玩家進入游戲后,玩家就會位于如圖2所示的位置,玩家想要離開密室,必須打開門。當玩家向門走去的時候,就會觸發(fā)一個觸發(fā)器,彈出一道數(shù)學概率問題。第一個問題是相當簡單的,凡是學過中學概率的都可以解決,所以當?shù)谝粋€問題回答錯誤時,會彈出失敗場景,并提示玩家要先去學習中學數(shù)學概率的內(nèi)容,再來玩這個游戲。當?shù)谝粋€問題回答正確,密室的門會自動打開,玩家可以經(jīng)過走廊進入第二個密室。從第二個密室開始,每道關(guān)口除了有一個正門外還有一個側(cè)門。當玩家走向第二個密室主門時,會彈出第二個問題,這個問題比第一個問題略難。當這個問題回答正確,主門會自動打開;如果回答錯誤,側(cè)道的門會打開,側(cè)道也會有一些關(guān)于概率的問題,這些問題是主門問題的分解問題,幫助玩家理解主門的問題。游戲的時間限制為25分鐘,單個問題沒有時間限制,這種設(shè)置給了玩家相對自由的空間。整個游戲場景共有6個主道以及6個側(cè)道,直到玩家開啟最后一個密室的門,游戲會結(jié)束,并彈出勝利的場景。
2.建模
(1)建模前的相關(guān)設(shè)置
為了使3ds Max制作的模型與現(xiàn)實世界相符合,需要對3ds Max進行必要的單位設(shè)置。將“系統(tǒng)單位”和“顯示單位”都設(shè)置為厘米。通過這樣的設(shè)置,也可以將模型導入Unity3D中,這樣進行后期游戲開發(fā)時更容易操作[3]。
(2)密室場景建模
密室建模采用“多邊形建模”的方法。密室分大廳和走廊兩個部分。整個密室由若干個大廳和走廊組成,密室大廳的統(tǒng)一規(guī)格是:高600cm,長1200cm,寬800cm,密室走廊的統(tǒng)一規(guī)格為長400cm,寬1000cm,高400cm。
①密室墻體建模
密室大廳的原型是一個高600cm、長1200cm、寬800cm的長方體,點擊工具欄的“創(chuàng)建”面板,選擇“標準基本體”中的“長方體”并將其命名為“box1”,設(shè)置其長、寬、高分別為1200cm、800cm、600cm。然后將box1轉(zhuǎn)換成“可編輯多邊形”,選擇“多邊形”子集中的“翻轉(zhuǎn)”選項,將box1的法線方向進行反轉(zhuǎn),使大廳的內(nèi)墻可見。
密室走廊的原型是一個長400cm、寬1000cm、高400cm的長方體,建立的步驟與密室大廳完全相同。建立后將其命名為“box2”。
②門的建模
要用門將大廳和走廊隔離開來。很多做法可以實現(xiàn)這個目的,筆者用的是“超級布爾”。將box1和box2按如圖3的方式進行擺放。選擇box1,在3ds Max的“復合對象”面板下選擇“超級布爾”。選擇“參數(shù)”中的“差集”和“蓋印”,選擇“拾取布爾對象”中的“開始拾取”,點擊box2,就會得到一個門的輪廓,效果如圖4所示。門的輪廓已經(jīng)完成,接下來就需要制作門了。門的原型是一個長400cm、高400cm、寬20cm的長方體,按照box1的建立步驟創(chuàng)建一個長400cm、高400cm、寬20cm的長方體,將其命名為“door”。將“door”擺放到box1和box2的交界處。
接著通過上述方法完成其他大廳及走廊的創(chuàng)建,并將大廳和走廊用門隔絕開來,然后選擇box1,選擇“修改”面板下的“附加”命令,將其他大廳和走廊與box1組合在一起,就完成了整個密室的建模。最終效果如圖5所示。
(3)道具建模
雖然游戲場景建立好了,但當玩家位于游戲場景中時會感覺略顯空曠,而且為了給密室營造一種詭異、緊張的氛圍,需要建立一些火盆擺放在主門的兩邊?;鹋璧闹谱髦饕譃榛鹋韬椭Ъ軆蓚€部分。
①火盆的制作
點擊工具欄的“創(chuàng)建”選項,選擇“標準基本體”中的“圓柱體”,并將其命名為“fire”。將fire的半徑設(shè)為40cm,高度設(shè)為20cm,邊數(shù)設(shè)為8并轉(zhuǎn)化成可編輯多邊形。選擇fire上邊的面,將其放大并選擇“插入”選項,給上邊的面插入一個新的面。選擇新面,選擇使用“擠出”,將新面向下拉,然后選擇“切割”命令,對新面的對頂點進行切割,共需要切割四次,中間會形成一個新的點。進入“點”子集,使用“選擇并移動”命令,將該點微微拉起。這樣就完成了火盆的制作。
②支架的制作
支架的做法相對簡單,同box1的建立方法一樣,建立一個長20cm、寬20cm、高180cm的長方體,并將“高度分段”設(shè)為2,將其命名為“support”。將新建的長方體轉(zhuǎn)換為可編輯多邊形,進入“點”子集,選擇“選擇并移動”命令,將support的中間四個點向下拉,將底面的四個點向外拉,支架的模型就建立完成了。為了節(jié)約電腦資源,可以將看不見的底面刪除。按照這種方法,再建立3個support,并按照圖6所示將四個支架與火盆組合在一起。至此,火盆的模型就完成了。
3.貼圖的制作
搜集貼圖,通過PS加以修改。將修改好的貼圖導入3ds Max賦給游戲場景中的內(nèi)墻和游戲道具。打開3ds Max工具欄的“材質(zhì)編輯器”,將貼圖賦予空白的材質(zhì)球,選擇“將材質(zhì)指定給選定對象”選項,即可進行模型的貼圖。
4.模型的導入
將建立好的游戲場景及其貼圖放在Unity3D游戲的資源文件夾下。當把游戲場景拉入Unity3D的開發(fā)界面中時,會發(fā)現(xiàn)游戲場景上的貼圖不見了。這時,只需要在游戲場景的文件里找到那幾個材質(zhì)球,將其重新賦予場景中的對象,就完成了游戲場景和道具的導入。
5.游戲各模塊的實現(xiàn)
(1)燈光系統(tǒng)
由于Unity3D無法識別3ds Max的燈光,所以需要在Unity3D建立燈光系統(tǒng)。本設(shè)計的燈光只用到“點光源”,使用這種光源,是為了模仿火光。
在網(wǎng)格層次面板選擇“創(chuàng)建”按鈕,創(chuàng)建一個點光源,將其重命名為“firelight”,在firelight的檢視面板里修改相關(guān)屬性。將firelight的“范圍”屬性設(shè)為15,“強度”屬性設(shè)為6,顏色調(diào)整為與火光相同的顏色。
(2)動畫
游戲中有門自動打開的動畫。選擇工具欄的“窗口”選項中的“動畫”,在彈出的對話框中,點擊紅色按鈕開始創(chuàng)建動畫,并先將要創(chuàng)建的動畫進行保存。在0:00的位置添加關(guān)鍵幀,將時間軸移動到2:00的位置,將游戲場景中的門向下拉,并添加關(guān)鍵幀。這樣一個門的開門動畫就做好了。按照以上做法,給每個門創(chuàng)建開門動畫。
(3)特效
本設(shè)計的特效是“火”,該特效是用粒子系統(tǒng)制作而成的。在網(wǎng)格層次面板選擇“創(chuàng)建”按鈕,創(chuàng)建一個粒子系統(tǒng),將其重命名為“fire”。在fire的檢視面板里修改相關(guān)屬性。粒子系統(tǒng)相關(guān)屬性修改完后,就要為火焰貼上材質(zhì),使其更加真實。在工程面板里創(chuàng)建一個材質(zhì),將其命名為“firepicture”。在其檢視面板里將“渲染”設(shè)置為“FX”,這樣當把火焰的貼圖賦給“fire”時,可以去掉貼圖黑色的部分。然后把“firepicture”賦給粒子動畫,這樣本設(shè)計的特效就制作完成了。
(4)人機交互
本設(shè)計使用的是Unity3D自帶的人物,點擊工具欄的“資源”選項,選擇導入“Character Controller”,就完成了游戲人物的導入。將導入的人物拖入到游戲場景里,就可以用W、S、A、D控制人物上下左右移動。
(5)音樂
系統(tǒng)需添加三種聲效。 首先需要為整個游戲添加背景音樂,選擇主相機,在工具欄上點擊“組件”選項,在“Audio”選項下面選擇“Audio Source”選項,將導入的背景音樂拖給主相機,在檢視面板里點擊“循環(huán)”選項,這樣背景音樂就會循環(huán)播放,第一種聲效添加完畢。其次,為了營造緊張的氛圍,需要給游戲人物添加心跳聲,與添加背景音樂的方法一樣,操作完畢之后,在游戲里就可以聽到人物的心跳聲。最后,需要為門添加開門聲,但這個需要用代碼實現(xiàn)。按照前面的方法添加完音效后,需要給門添加如下代碼:
If(doorIsOpen==true)
{Door.audio.PlayOneShot(doorOpenSound);}
這樣,所有的音效就全部添加完成了。
(6)碰撞與觸發(fā)
為了避免人物穿墻而過等非自然現(xiàn)象的出現(xiàn),需要給游戲添加碰撞。為了讓人接近門的時候可以自動彈出概率題目,需要添加觸發(fā)器。
①人與建筑物的碰撞
點擊游戲場景的墻體,點擊工具欄的“組件”按鈕,選擇“物理”面板下的Mesh碰撞器。這樣游戲人物就可以站在游戲場景里,而不會掉下去。
②人與門的碰撞
同給墻體添加碰撞體的步驟一樣,給門添加一Box碰撞器,使人物避免穿過門到達另一個密室。
③人與火盆的碰撞
給火盆添加Box碰撞器,步驟同上,使人物避免穿過火盆架。
④觸發(fā)器
為了實現(xiàn)人走近門時自動彈出題目,需要在門的前面放一個空物體,給空物體添加Box碰撞,在空物體的檢視面板里將“IS Trigger”打上對勾。彈出題目的相關(guān)代碼如下:
function OnGUI()
{if(WindowSwitch==true)
{GUI.skin=im;
GUI.BeginGroup(menuAreaNormalized);
windowRect=GUI.Window(0, windowRect,WindowContain,“題目”);
GUI.EndGroup();}}
function WindowContain(windowID:int)
{ GUI.Label(Rect(0,30,300,300),“5本書分給甲乙丙三個人,按一個人一本,另兩個人各兩本,有多少種不同的分法?!保?;
If(GUI.Button(Rect(0,180,80,60),“120”))
{WindowSwitch=false;Destroy(this.gameObject);}
If(GUI.Button(Rect(220,180,80,60),“30”))
{WindowSwitch=false;Destroy(this.gameObject);}
If(GUI.Button(Rect(0,240,80,60),“90”))
{box3.flag2=1;Destroy(this.gameObject);}
If(GUI.Button(Rect(220,240,80,60),“60”))
{WindowSwitch=false;Destroy(this.gameObject);}
GUI.DragWindow();
}
四、游戲的優(yōu)化與發(fā)布
1.游戲優(yōu)化
游戲場景中含有大量的點燈光,會對游戲的性能產(chǎn)生較大的影響。使用光照貼圖技術(shù),將光線效果渲染成貼圖可以節(jié)約大量的電腦資源[4]。方法為:點擊工具欄的“窗體”按鈕,選擇“光照貼圖”選項,點擊“烘焙”對當前游戲場景進行烘焙。
2.發(fā)布
在工具欄的“編輯”面板下,選擇“工程設(shè)置”面板下的“玩家”選項,對游戲的圖標和名稱進行設(shè)置。點擊“文件”面板下的“工程設(shè)置”選項,從工程面板里將游戲的幾個場景文件拖入到“工程設(shè)置”的窗口里。點擊“建立”按鈕,就會生成一個可執(zhí)行文件,這樣就完成了游戲的發(fā)布。游戲勝利時的場景如圖7所示,答題時的場景如圖8所示。
五、結(jié)束語
文章設(shè)計并實現(xiàn)了一個中學數(shù)學概率的教育游戲,幫助學生在娛樂中進行學習,讓學生輕松學習、愛上學習、快樂學習。系統(tǒng)基本實現(xiàn)了需求分析中的要求,但由于時間倉促,系統(tǒng)的功能還可以在后續(xù)研究中進一步完善,如:可以在游戲中添加一些障礙物或機關(guān),以增加游戲的趣味性;可以在游戲場景進行切換時添加一些過度動畫,使游戲更加美觀。
參考文獻:
[1]馮威.數(shù)學游戲與高中數(shù)學教育研究[D].大連:遼寧師范大學,2012.
[2]王倩,趙玉清.教育游戲在小學數(shù)學教學中的應用探析[J].軟件導刊,2013,12(3):3-8.
[3]Li Wang. Researching of the three-dimensional virtual simulation campus scenes construction technology[J].The Open Cybernetics & Systemic Journal,2015(Volume9):1056-1057.
[4]Li Wang.Construction of the three-dimensional virtual campus scenes Problems and Solutions[J].The Open Cybernetics & Systemic Journal,2015(Volume9):1132-1133.
[5]宣雨松.Unity3D游戲開發(fā)[M].北京:人民郵電出版社,2012:91-13.
[6]謝亮.數(shù)學教育游戲與數(shù)學教學[D].廣州:廣州大學,2008.
(編輯:魯利瑞)