葉現勇 許向榮 梁啟萌





摘 ?要:在當前疫情暴發的時代背景下,幾乎無法走進教室、在家直播成為常態的背景下,新興的游戲化學習被不斷重視并被人們積極鼓勵其發展。在游戲化學習之前,游戲與學習間的關系一直處于兩個截然相反的兩個立場,就如同電磁的正負極。對游戲是否可以用于學習進行研究,得到現有市場中已經出現將游戲運用于學習的產品這一結論。對比各個主流游戲的游戲引擎使用情況以及綜合自身條件下,選擇Unity3D技術實現手游化學習是最佳選擇。
關鍵詞:Unity 3D;手游;游戲化學習
中圖分類號:TP312 ? ? ? ? 文獻標識碼:A文章編號:2096-4706(2022)05-0022-04
Design and Implementation of Chinese Character Game Based on Unity3D
YE Xianyong, XU Xiangrong, LIANG Qimeng
(School of Information Engineering, Zhengzhou University of Science and Technology, Zhengzhou ?450064, China)
Abstract: Against the backdrop of the current COVID-19 outbreak, when it is almost impossible to go into classrooms and live broadcast at home has become the norm, the emerging gamification learning has been increasingly valued and actively encouraged to develop. Before gamification learning, the relationship between games and learning is always in two opposite positions, like the positive and negative poles of electromagnetic forces. This paper studies that whether games can be used for learning, and it leads to the conclusion that there are already products that use games for learning in the existing market. Comparing the using situation of game engines in various mainstream games and considering synthetically their own conditions, it is the best choice to choose Unity3D technology to realize mobile game-based learning.
Keywords: Unity3D; mobile game; gamification learning
0 ?引 ?言
在現如今,已經在數字化越走越遠的時代,手機已經成為和衣服一樣的生活必備品,是人們日常生活上中不可或缺的一部分。手機在正常的生活情況如上課、學習、交流等方面,已經是占據重要的一環,以另一種方式講是手機成為人們或缺信息必須的一種途徑,并且在人們獲取信息方式的重要程度中占據極大的比例。游戲產業發展飛快,游戲種類千變萬化,IT界最令人亢奮的消息幾乎都是圍繞著游戲,因此游戲成為人們日常生活中不可或缺的娛樂與休閑方式[1]。
人們已經無法脫離手機等智能終端,而現在手機的普及為手游等娛樂方式創建了應用的環境,這也為現在創造教育類型游戲提供了條件。相比較傳統的網游游戲、主機游戲、電視游戲等,手游具有更加方便的便攜性以及更為簡單的操作性。在當今的快節奏社會情況下,兒童對于自身的自控力并未達到能夠約束自己的程度,對電腦的依賴性以及愛玩的天性,使得電腦對于兒童來說具有很大的吸引力,但手機不同,家長是可以從孩童中收回的,也可以代替電腦的作用,因此手機就成為漢字游戲的良好載體。因為處于小學階段的兒童心智發育并不成熟,教師家長往往需要用一定的強硬教學策略來加強對兒童的教育,在此基礎上為游戲化學習的實現提供背景[2]。游戲化學習也是在這些因素為基礎才被人們發掘,提出并不斷完善。
1 ?游戲項目分析
根據軟件工程方法論和游戲開發的行業標準要求,對于VR游戲的設計開發必須要充分了解用戶需求、明確游戲項目目標和所要解決的問題,這是游戲開發獲得成功的基礎和前提條件[3]。對于一款游戲的開發、研究與完善都是在現有的市場需要以及對于這一游戲類型的需求為基礎而得以繼續實行的,在此之上在對游戲的大量細節處進行修改完善以達到最好的符合市場標準的要求。VR虛擬現實技術探索的是一個富有挑戰性和擁有大量交叉技術和前沿學科的研究領域[2],而在國內外對于VR以及AR技術的發展都是抱著極大的期望,也期望這這一項技術帶來更多的福祉,對人民的日常生活帶來巨大的改善。游戲化學習在現在并不陌生,早在許多年前這一概念就已被人提出,對其的定義是指知識傳授者在傳授知識的過程中和學習者在學習的過程中都以游戲化的方式進行[4],現時代對于游戲化學習的重視程度越來越重,也在逐步將游戲不斷應用在教育等方面,雖然在國內外目前有不少公司和研究機構開發了應用在中小學課程的教育游戲,但是基本上都是針對語文、數學、英語、物理、化學等傳統學科,在小學科學學科方面的教育游戲,是少之又少[5]。
2 ?游戲整體設計
現有的關于漢字迷宮的程序設計已基本實現完畢,如圖1所示,游戲整體思路設計是繞迷宮循環的函數設計,行走控制的程序設計,檢測獲取物的思路以及獲勝條件的設計。
圖1 ?程序設計
2.1 ?繞迷宮循環的函數設計
實現繞迷宮循環這一目的,并且規定前進步數是可以對其進行自定義的,因此定義多個變量用于記錄當前的位置以及要前進步數的數值,并且以前進步數數值可以為負這一設計來設計前進與否的條件,再根據判斷行走變量的正負來決定其走入的遍歷函數。
遍歷函數主要調用transform函數中的look-at方法看向下一個目標以及前進的步數。遍歷函數的主要作用是從當前位置開始,一直遍歷到與獲得的遍歷數字數值相同位置的序號結束,使用于原本的思路設計時,仍需注意獲得數值的正負來分別定義,因數值的正負規定其遍歷方向使其滿足原本想要實現的設計思路。其中部分代碼如下:
if (jeishu < 0)
{
this.transform.LookAt(LujingVec[LujingIndex - 1]);
cc.Move(this.transform.forward * moveSpeed * Time.deltaTime);
if (Vector3.Distance(this.transform.position, LujingVec[LujingIndex - 1]) < 0.1f)
{
LujingIndex = --LujingIndex % LujingVec.Length;
int dhj=lujingindex2-1;//判定超過迷宮格數變換行走
if (dhj<0)
{
lujingindex2 = Lujing.Length ;
}
if (LujingIndex == Mathf.Abs(lujingindex2 + jeishu)) //該換更新人物現在數據
{
lujingindex2 = LujingIndex;
jeishu = 0;
zou = false;
}
}
2.2 ?行走控制的程序設計
行走控制的程序設計是游戲是依據角色控制器的move方法來實現的,主要是使得游戲人物能夠在游戲運行中可以自由移動。首先需要解決角色行走方向的問題,而通過定義一個公開的Vector3數組來獲取相關數據來拿對游戲人物行進方向來進行控制,之后定義二個boil類型函數判定游戲人物是否行走以及是否將選擇的方向數據存入鏈表,以便之后可能的需要回溯至其原本信息情況。其中部分代碼如下:
void Update()
{
Vector3 jkj = this.transform.TransformDirection(new Vector3(x: inputc.m_Movement.x, y: 0, z: inputc.m_Movement.y));
jkj.y -= ui * Time.deltaTime;//角色行走
Xunluo();判定超過迷宮否
}
2.3 ?檢測獲取物的思路
獲取物的檢測實現是為了實現只有到了在游戲設計中設定的位置停下后,才能夠觸發物體的動畫,因此在程序設計中設定一個公開變量,并定義這一變量與用小球代表的人物開始與結束時的位置數據始終相同來實現這一目的,而這一變量只有在運行以及行走完畢后才能夠改變相應標識。在游戲程序設計中在對這一設計進行保險設定,定義新的函數來判定人物行走位置與設定的物品獲取設置位置是否吻合來二次驗證獲取的正常,避免可能出現的錯誤。在游戲設定中,根據獲取物品的個數對定義的bool型變量個數進行更改,在記錄的公開位置變量達到相應位置時,bool型變量改變為TRUE,而在設定的bool型變量全部為TRUE時,顯示勝利的UI圖像,其中部分代碼如下:
if (collider.GetComponent<daojv>().lujingindex2.ToString() == this.gameObject.name.ToString())
{
if (collider.gameObject.CompareTag(“Player”))
{
zou=true;
}
}
2.4 ?迷宮陷阱的設計
在整體的迷宮設計中,陷阱是不可或缺的一環,也是整個游戲的樂趣之一。因此對于迷宮中的各項陷阱賦予其不同的塑性從而達到實現不同的功能與效果,如前進、后退。陷阱的屬性是在玩家觸發后顯示的因此可能會因為陷阱而需要重新設計通關路線,也有可能距離通關更加接近。棋子在進入陷阱中便不再接受任何玩家發出的指令,而是在陷阱中的效果完全實現后,再繼續接受玩家給出的指令,從而實現陷阱的觸發后的無法取消。而陷阱的實現則是基于Unity3D中的剛體設置作為觸發器,檢測到棋子是進行已經設定好的程序設計執行陷阱任務,其中部分代碼如下:
void OnTriggerStay(Collider collider)
{
if (collider.GetComponent<biren>().lujingindex2.ToString() == this.gameObject.name.ToString())
{
if (collider.gameObject.CompareTag(“Player”))
{
trager.GetComponent <biren>().jeishu = selectf;
if (selectf > 0)
{
trager.Get Component <biren>().maketrue = true;
}
else
{
trager.GetComponent<biren>().zou = true;
}
}
}
2.5 ?獲勝條件的設計
獲勝條件的確立是根據游戲設定而確立的,也影響著整個游戲程序的走向與設計。在初始時,玩家使用設置的按鍵越過障礙,到達一個平臺然后玩家需要運用給定的按鍵組合控制人物利用相應特殊格子(前進或后退格數)來到達目的地,人物在得到多個關鍵道具后獲勝,而道具的獲得只有行走至一定步數并停留在設定的位置才可以獲得,在步數大于設定的所熟知步數時,是無法獲得對應的道具,其中部分代碼如下:
void OnTriggerStay(Collider collider)
{
if (collider.GetComponent<biren>().lujingindex2.ToString() == this.gameObject.name.ToString())
{
if (collider.gameObject.CompareTag(“Player”))
{
switch (select)
{
case 1: trager.GetComponent<End>().one = true; break;
case 2: trager.GetComponent<End>().two = true; break;
}
if (trager.GetComponent<End>().one && collider.GetComponent<End>().two)
{
trager.GetComponent<End>().san = true;
}
}
}
}
3 ?游戲的實現
3.1 ?Unity3D組件
一個完整的Unity游戲工程由游戲場景(Scene)、游戲對象(GameObject)、游戲組件(Component)組成。它們共同構成了Unity開發框架。它們之間的關系表現為一個游戲工程由若干個游戲場景組成,一個游戲場景由若干個游戲對象組成,一個游戲對象由若干個游戲組件組成[6]。在 Unity3D中添加多項組件,如剛體(Rigid body)、碰撞體(Collider)、動畫管理者(Video manager)以及管理的c#語言腳本等等來滿足整個游戲的程序設計需求,不斷調試程序系統來解決可能出現的各項問題,實現原本設想的游戲結構與游戲畫面。
3.2 ?人物動畫
人物動畫是游戲角色正確運行的主要特點之一,同時也是一個游戲里能夠正確游玩的重要組成部分,例如CG 等,這一類動畫效果能很大程度上使得玩家明白游戲中的內容以及創作者想要表達的意思。
(1)待機動畫如圖2所示:在游戲運行時,玩家在一段時間內沒有下達指令且任務自身沒有行動時程序判斷是否屬于待機狀態,若判斷待機則會出現人物的待機動畫并提示玩家繼續進行游戲。
圖2 ?待機動畫
(2)移動動畫如圖3所示:如同人的移動會隨著動作而移動,在游戲中人物的移動是需要設定行走的動畫并將其賦予設定的人物上,讓人物的行走具有一定的靈性,不只是像棋子一樣過于死板、呆滯。
圖3 ?移動動畫
(3)道具動畫如圖4所示:在游戲設定中,玩家在行進到一定路程時達到一定的條件會獲得道具,因此獲得道具時的動畫是在提醒玩家已經獲得了道具,以及道具使用時的動畫也是在提醒玩家道具已經使用了。
圖4 ?道具動畫
(4)失敗動畫如圖5所示:此游戲類型是限時迷宮類,對玩家的停留時間是有一定限制的,因此超過一定時間就會被設定的程序判定為失敗并播放沮喪類型的動畫提醒玩家游戲通關失敗。
圖5 ?失敗動畫
3.3 ?地圖設計
地圖的設計是基于其游戲類型來設計的,迷宮類游戲是建造一個完整的迷宮且迷宮需要具有一定的迷惑性,使得玩家不會一眼就看破整個迷宮的走向、設計,帶給玩家更好的游戲體驗。在初始地圖中設立多個cube組件來組成迷宮地圖的大致樣貌并在后續中不斷將地圖完善,使其更加復雜多變,在道路設計方面不僅設計多個出入口以而且還需設計出若干條有著陷阱或者阻礙的道路,使得整個迷宮具有多項可能性可能進入的入口與出口與上次進出的完全不同,帶去更多的可玩性。而這個迷宮的各種解法其意義是更多的讓玩家通過自己的想法去判斷前進的方向,而陷阱等等只是干擾玩家前進并不是將玩家堵死,而是讓其意識到錯誤并學會走出錯誤、不鉆牛角尖,而這也使得整個游戲地圖具有更多的可能性和教育性。
4 ?結 ?論
本文通過研究和比較當前主流的游戲開發引擎并對它們具有一定的了解和理論基礎,并且進一步介紹了Unity3d 軟件的主要功能及特性。Unity3D需要從游戲場景、技術架構、三維展示和互動功能多個方向研究,強化設備設計與操作員的交流。Unity 3D引擎是做高品質游戲的一個重要游戲設計軟件,也是目前市場上創作游戲的一大平臺,目前市場大多數的3D手機游戲通過這個引擎進行開發,其最大的優點就是有著很高的通用性,能發布到大多數的平臺。通過分析比較,選取Unity3d作為開發Untiy3d漢字游戲的設計軟件與引擎,以多方面情況相結合,創造出一款專門用于兒童教育的新類型游戲,通過不斷實踐完成了游戲的程序設計。在游戲開發過程中對于游戲整體體系設計與整個游戲效果設計是采取最為簡便的方法實現最為復雜的情況,對游戲中多項難點以及錯誤多次糾正、修改甚至更改游戲原有設計以達到游戲能夠運行的程度。經多次程序測試結果表明,游戲的整體風格清新鮮艷,功能符合原有設計且更加實用,以及與游戲設置的休閑場景相結合,整體的游戲效果與游戲體驗感達到現有技術所能達到的最為滿意的效果。
參考文獻:
[1] 殷爽,邵金俠,胡蓉,等.Unity3D引擎開發RPG游戲“武魂之戰”的設計與實現 [J].現代工業經濟和信息化,2021,11(7):82-84.
[2] 程弘霖,楊鍵,唐婭雯.基于Unity3D的VR求生游戲的研究與實現 [J].信息與電腦(理論版),2019,31(24):88-91.
[3] 王建磊.基于Unity3D的虛擬現實游戲設計與實現——以《VR動物園》項目為例 [J].現代信息科技,2021,5(10):53-56+61.
[4] 王同娟.基于Unity3D的教育游戲開發研究 [J].電腦編程技巧與維護,2018(11):7-8+27.
[5] 周雪薇.基于Unity3D的小學科學教育游戲的設計與開發 [J].微型電腦應用,2021,37(1):44-46+51.
[6] 王同娟.基于Unity3D的教育游戲開發研究 [J].電腦編程技巧與維護,2018(11):7-8+27.
作者簡介:葉現勇(2001—),男,漢族,河南周口人,本科在讀,研究方向:數字媒體技術;許向榮(2000—),男,漢族,河南周口人,本科在讀,研究方向:數字媒體技術;梁啟萌(2001—),男,漢族,河南周口人,本科在讀,研究方向:數字媒體技術。