王麗



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