鄭清生 代君



10.3969/j.issn.1671-489X.2022.03.036
摘 要 教育游戲可有效提高學生學習興趣和學習效率?;谄吣昙墝W生對游戲的偏好及對新鮮技術學習的強烈好奇心,以滬科版七年級數學上冊“相反數”為例,利用Unity 3D設計與開發一款教育游戲,著重闡述游戲的設計與開發過程,以期幫助學生更好地理解相反數概念,掌握相反數在數軸上的位置關系。
關鍵詞 初中數學;相反數;教育游戲;Unity 3D
中圖分類號:G633.62 文獻標識碼:B
文章編號:1671-489X(2022)03-0036-06
0 引言
中國互聯網絡信息中心(CNNIC)發布的《2019年全國未成年人互聯網使用情況研究報告》顯示,未成年網民上網玩游戲占未成年網民上網從事活動的比例達61%,初中生網民上網玩游戲占初中生網民上網從事活動的比例達64.7%[1]。2021年,中國互聯網絡信息中心(CNNIC)第47次《中國互聯網絡發展狀況統計報告》顯示,截至2020年12月,10~19歲的網民占比為13.5%,初中學歷網民群體占比為40.3%[2]。報告表明未成年人對游戲有著特別的偏好。
教育游戲是以游戲的形式和過程呈現教育內容,以幫助學習者獲得概念、知識、技能以及策略等為目的,集知識性、趣味性、競爭性、虛擬現實性等于一體的計算機游戲軟件[3]。教育游戲作為游戲的一個子集,不再只具有娛樂的功能,更具有教育功能屬性?!读x務教育數學課程標準(2011年版)》指出,數學課程的設計與實施要合理運用現代信息技術,注意信息技術與課程內容的整合,開發并向學生提供豐富的學習資源,要把現代信息技術作為學生學習數學和解決問題的有力工具,改進教與學的方式,使學生樂意并投入探索性的教學活動中去[4]。
將數學的學習內容合理地融入游戲中,通過模擬現實情景,吸引學生眼球,激發學生學習興趣。游戲關卡的挑戰性和任務性的合理設計,有利于學生主動地進行思維、驗證和探索等活動,發展學生思維的創造性。
本文根據數學新課程標準,選擇滬科版七年級數學上冊“相反數”進行數學教育游戲的設計與開發,為學生提供寓教于樂的游戲學習資源,以更好地促進學生對抽象數學內容的學習,激發學生學習數學的內在動力。
1 學生特征分析
對于剛從小學升入初中的七年級學生來說,正處于小學到初中的過渡階段。此階段的學生思維活躍,參與學習的積極性也較高,具備一定的抽象思維能力,但有時還需要借助一些具體形象事物來支持;在學習的過程中具備一定的獨立分析、概括、歸納的能力;具有一定的自學與合作學習的能力,但學習自控能力還不強,需要教師在適當的時候加以引導和掌控[5]。大多數學生樂于學習數學,但數學學科內容相對抽象,如果教師不采用一些具體形象內容進行教學,很容易導致學生對枯燥的數學知識喪失學習興趣。另外,此階段學生對新媒體技術具有強烈的好奇心,對信息技術教學系統的學習和交流參與度高。因此,在數學學科教學中,根據學生特征,適當引入數學教育游戲,可取得事半功倍的效果。
2 學習內容分析
“相反數”是初中數學七年級上冊第一章的內容,是初中數學學習的主要內容之一,是在學生學習了負數的基礎上,遵循過渡時期學生的認識特點,即把小學所學的正數、零和初中的負數知識緊密結合起來,為學生以后順利掌握絕對值的意義進行有理數運算打下基礎。通過相反數的學習,可以使學生對已學過的有理數、數軸等知識加以鞏固,使學生理解相反數的概念及應用,讓學生體會到相反數的定義過程,理解數軸上的點與數的對應關系,從而培養學生的探究發現能力和邏輯思維能力及歸納能力。同時讓學生感受事物之間對立與統一的辯證思想,體驗數形結合的思想。“相反數”內容的掌握對學生日后的學習具有重要作用。
3 “相反數”游戲設計
教育游戲在中小學課程教學中的應用越來越受到關注。游戲不僅可以提高學生的學習積極性,而且可以培養學生的探究學習能力。筆者以初中數學課程“相反數”的內容為例,開發制作適用于七年級學生的教育游戲,通過Unity 3D和編程技術創建虛擬太空環境闖關游戲,讓學生在體驗游戲的過程中充分展現主體地位。
3.1 游戲設計思路
利用教育游戲展開學科知識的學習,在內容上要注意合理的選擇,不是所有的內容都適合游戲方式,主要是針對抽象程度高的知識點;在游戲設計上需要符合學生身心發展的特點,界面不宜過于復雜,以減小認知負荷;在關卡設置上要匹配學生的認知能力,在游戲挑戰難度上應符合學生現有技能水平,才有利于讓學生產生心流體驗。相反數是指絕對值相等,正負號相反的兩個數,它們互為相反數。本案例的設計是基于相反數在數軸上的位置關系和相反數的代數及幾何意義為設計依據?;橄喾磾档膬蓴到^對值相等,但符號相反;互為相反數的兩數到數軸原點距離相等。筆者所設計的游戲需要應用數學相反數的代數和幾何意義,游戲過程中隱含有數學相反數知識,從而引導學生進行探究活動。本案例游戲的設計構思如圖1所示。
3.2 游戲的模塊及功能設計
本游戲是基于Unity 3D游戲引擎,圍繞中學七年級數學上冊“有理數”章節中有關相反數知識點開發的三維游戲。在虛擬太空中搭建玩家學習和娛樂平臺,其中含游戲開始界面、操作說明界面、三個關卡場景、闖關成功或失敗反饋界面、游戲積分榜等模塊。通過設置與相反數知識相關的游戲障礙物,將學習內容融合到游戲闖關過程中。游戲可作為課堂內輔助教學資源,也可作為課后學習鞏固資源,具有提高學生學習興趣和學習主動性,實現寓教于樂的功能。
4 “相反數”游戲的開發
4.1 開發工具介紹
Unity 3D也稱Unity,源自丹麥哥本哈根Unity
Technologies公司研發的一款可以輕松創建諸如三維視頻游戲、建筑可視化、實時三維動畫等類型互動內容的多平臺綜合型游戲開發工具。Unity 3D可以運行在Windows和Mac OS X下,可發布游戲至Windows、Mac、Wii、iPhone、WebGL、Windows Phone 8和Android平臺。利用Unity Web Player插件還可發布網頁游戲,支持Mac和Windows平臺的網頁瀏覽,是一個全面整合的專業游戲引擎[6]。
到目前為止,Unity 3D已更新到Unity 2021版本,主要以C#和JavaScript為編程語言。Unity
3D具有跨平臺一鍵發布功能,擁有可視化綜合編輯系統、便捷資源導入方式、高性能著色器,內置強大的地形編輯系統和模擬現實的物理引擎及強大的光影渲染系統等。除此之外,Unity 3D還提供各種功能的引擎組件,如音效、動畫、粒子系統、圖形用戶界面(GUI)等組件,并且具有容易實現復雜的物理碰撞等特效、開發虛擬現實環境便捷、Unity 3D(個人版)免費使用等優勢。因此,筆者選擇Unity 3D作為游戲開發工具。Unity 3D軟件界面如圖2所示。
4.2 開發過程與技術實現
4.2.1 開始界面制作 游戲運行后的開始界面主要運用UI(交互界面)對象,界面內容含背景圖、標題文本框、開始游戲按鈕和退出游戲按鈕。筆者創建操作按鈕是直接從菜單中選擇UI控件的“Image”。其中點擊按鈕事件代碼如下:
public class StartGame : MonoBehaviour{
public void start() {
SceneManager.LoadScene(“Level0”);}
public void quit(){
Application.Quit();}}
“SceneManager.LoadScene(“Level0”)”用于加載游戲操作說明場景,“Level0”為游戲操作說明場景編號;“Application.Quit()”為游戲發布后運行游戲,退出Unity 3D應用程序,并為兩個操作按鈕分別添加“Audio Source”音頻組件,增加點擊按鈕音效。
4.2.2 游戲簡介和游戲操作說明界面 本界面主要采用UI控件中的“Text”“Image”,學生通過此界面了解游戲的使用方法,看完游戲說明后,可以點擊鼠標或按下回車鍵切換到下一場景,代碼如下:
public void enter_1(){
if ((Input.GetMouseButtonDown(0)) || (Input.GetKeyDown(KeyCode.Return)))
{SceneManager.LoadScene(“Level1”);}
else { }
}
通過點擊鼠標左鍵或按下鍵盤上的回車鍵,并會加載游戲場景”Level1”,即進入游戲第一關“勇攀高峰”。
4.2.3 游戲環境及游戲對象創建 Uniyt 3D游戲引擎自帶地形編輯系統,可以創設所需要的逼真環境。但本游戲采用天空盒和GameObject菜單下Plane、Cube、Clyinder等對象構建簡單的太空虛幻場景,并導入第三人稱游戲角色Player預制體資源包、數軸圖片資源、音視頻及金幣模型等素材,完善游戲場景,如圖3、圖4、圖5所示。
1)游戲角色由Unity 3D官網下載資源包。資源包內自帶有角色控制腳本,然后將角色資源包中的第三人稱人物角色預制體拖入場景中即可,學生通過操控ASDW鍵或方向鍵實現角色移動和跳躍的控制。代碼此處略。為使角色拾取金幣產生碰撞檢測效果,為角色Player屬性添加剛體組件“Rigidbody”和碰撞組件“Capsule Clooider”,
并初始化金幣數量??刂拼a如下:
[RequireComponent(typeof(Rigidbody))]
public class Player : SingletonMono
public int curCoin; //當前獲取的金幣
Rigidbody rig;
void Start(){
curCoin = 0; //初始化玩家金幣為0
rig = this.GetComponent
}}
2)為使主攝像機能夠跟隨角色移動而變換為角色對應的視野范圍,給主攝像機掛腳本組件,代碼如下:
public class CameraFollow : MonoBehaviour{
Vector3 angle;
public float speedX = 200.0f; //鼠標水平方向的移動速度
public float speedY = 100.0f; //鼠標垂直方向的移動速度
private Transform transTarget; //攝像機看向的目標
void Start (){
//獲取攝像機原始的旋轉角度
angle.x = transform.eulerAngles.x;
angle.y = transform.eulerAngles.y;
transTarget = GameObject.FindGame
ObjectWithTag(“Player”).transform;}
void LateUpdate (){
float xMouse = Input.GetAxis("Mouse X");
//(-1,1)之間
float yMouse = Input.GetAxis(“Mouse Y”);
angle.x -= yMouse * speedY * Time.delta
Time;
angle.y += xMouse * speedX * Time.delta
Time;
angle.x=Mathf.Clamp(angle.x, 10, 90);
//(限制某個值在最小和最大值之間)
//控制攝像機的旋轉
transform.rotation = Quaternion.Euler(new Vector3(angle.x, angle.y, 0));
//控制攝像機的位置
//向量左乘四元數得到旋轉之后的向量
transform.position = transTarget.position + trans
form.rotation * new Vector3(0, 0, -10);}}
3)游戲中的金幣在游戲運行時具有隨機旋轉角度效果。當第三人稱角色與場景中金幣發生碰撞檢測時有相應音效,且隨后消失。代碼如下:
public class Jinbiscript: MonoBehaviour{
public float speed;
void Start(){
speed=Random.Range(90,360); //僅第一幀運行一次
}
void Update(){
transform.Rotate(Vector3.up * speed * Time.deltaTime,Space.World);
}
void OnTriggerEnter(Collider c){
SoundManager.Instance.playEffect(Sound
Path.pickupCoin); //播放音效
Player.Instance.curCoin++; //記錄分數(玩家身上的金幣數量加1)
Destroy(gameObject); //銷毀
}}
4)為增加游戲過程中的趣味性,為游戲場景添加背景音樂,建立空對象,命名為Music,為其添加音頻組件“Audio Source”,加載背景音樂。
以上是以游戲第一關“勇攀高峰”為例的場景環境及對象的創建,第二關與第三關游戲類似于第一關的操作。為方便后續游戲關卡場景環境及對象的創建,可以將上述游戲對象制作成預制體,在后續關卡的對象創建時直接調用,稍加修改即可。同時,為豐富游戲場景的光照效果,可以為場景適當添加和調整光源“Directional Light”。
4.3 游戲規則及關卡
本案例的游戲規則是學生通過控制游戲環境中的人物角色,實現在場景中的自由移動和跳躍,當人物角色碰撞到旋轉的金幣時,會發出碰撞音效,并通過碰撞拾取金幣,獲得金幣數量積累榜。在有數軸場景的環節,在相反數對稱的數軸對應位置取消障礙物對象的碰撞組件,以實現隱藏的出口功能。學生在游戲過程中必須結合數學相反數知識(即一對相反數關于原點對稱的性質),只有正確找到障礙物隱藏的出口,才能控制角色在游戲中繼續暢游。數軸上的隱藏出口同樣具有陷阱,學生一旦操作不當,在行走或跳躍的過程中跳出場景平臺范圍,人物角色便會掉落茫茫的太空中,游戲任務挑戰失敗,通過點擊“Restart”按鈕重新加載本關游戲。只有在拾取的金幣數量達到關卡所設定的數量后,學生控制的人物角色才可以通過碰撞時空傳送門進入下一關卡游戲,否則時空傳送門碰撞檢測傳送功能無效。
1)實現重新加載本關游戲代碼:
public class Restart : MonoBehaviour{
private Text restartText;
[Header("當前關卡編號")]
public int currentLevelNum=1;
void Awake(){
restartText=GetComponent
void Update(){
if (Player.Instance.transform.position.y<-1)
//如果玩家掉下去了,則顯示重啟按鈕
{restartText.enabled=true; //顯示重啟按鈕
}}
public void OnRestartBtnClick(){
SceneManager.LoadScene(“level”+currentLevelNum);
}}
2)實現金幣積累榜功能的游戲代碼:
public class CoinRecord : MonoBehaviour{
[Header("通關游戲的腳本")] //可以在屬性面板提示信息作用
public Exit exitScript; //通關游戲的腳本
private Text coinRecordText;
void Start(){
//從當前游戲對象上找一個Text組件,給coinRecordText
coinRecordText=this.GetComponent
(); //this是指本當前游戲對象
}
void Update(){
//金幣情況(2/3)
coinRecordText.text = "當前金幣" + Player.Instance.curCoin + "枚, 通關需" + exitScript.coin
Num +"枚";
if(Player.Instance.curCoin==exitScript.coin
Num){
//將文本顯示為綠色
coinRecordText.color=Color.green;}}}
3)時空傳送門碰撞檢測,實現游戲闖關功能代碼:
public class Exit: MonoBehaviour{
public string nextLevel; //下一個場景的名字
public int coinNum; //過關需要的金幣數量
//碰撞檢測函數
void OnCollisionEnter(Collision c) {
if (Player.Instance.curCoin >= coinNum){
SceneManager.LoadScene(nextLevel); //加載到下一關
}
else{print("不能過關,當前幣"+Player.Instance.
curCoin+"枚,過關需要金幣:"+ coinNum+"枚");}}}
游戲設有三個關卡,分別是“勇攀高峰”“星際穿越”“躍躍欲跳”。任何一關游戲挑戰失敗,均可無限次重玩當前關卡游戲。只有連續三個關卡都挑戰成功后,則表示游戲闖關成功,同時加載挑戰成功反饋場景,給學生帶來一定的闖關成功的成就感,并結束游戲。
4.4 游戲其他功能
4.4.1 返回游戲開始界面 為方便各關卡游戲的退出交互功能,在游戲的三個關卡場景中均設置有“Return”返回游戲開始界面的交互按鈕,可以隨時點擊該按鈕結束當前游戲并返回到游戲開始界面,加載游戲開始界面的代碼如下:
public class BackToStratGame : MonoBehaviour{
public void BackToStart(){
SceneManager.LoadScene(“StartGame”);}}
其中“StartGame”為游戲開始界面的場景名稱。
4.4.2 動畫效果制作 為豐富第二關卡游戲“星際穿越”場景效果,給“星際穿越”場景中的各星球添加不同轉速的旋轉動畫效果,以活躍場景氣氛。方法是分別選定場景各星球對象,選擇Unity
3D軟件中的“windows\Animation”,進入動畫編輯器界面,進行動畫制作,如圖6所示。
4.5 游戲的測試及發布
經過上述設計與開發之后,對游戲進行測試,發現游戲的交互功能和控制邏輯正確,因此打包生成可執行程序,發布游戲。筆者開發的游戲是應用在計算機機房的,所以在“Platform”發布平臺列表中選擇“PC,Mac&Linux Standalone”類型,然后選擇“Player Settings...”,并填寫發布者名稱和作品名稱,最后點擊“Build”按鈕,生成可執行文件,使用者只需雙擊打開其中的.exe文件即可運行游戲。
5 結束語
筆者按照教育游戲的一般設計與開發原則,闡述初中數學“相反數”教育游戲設計與開發過程,但游戲應用于實際教學的效果還有待于后續進一步的驗證。同時,該款游戲在游戲與教育平衡性、游戲界面和場景美工、學習測試模塊等方面仍存有不足,仍需后續進一步的完善。教育游戲的研究是一個長期的過程,需要廣大教師不斷探索和實踐,創造開發出更多優質的學習資源,以彌補傳統數學教學模式的不足。筆者希望通過本案例的設計與開發,能夠起到拋磚引玉的效果,為教育游戲的研究提供一定的參考。
參考文獻
[1] 2019年全國未成年人互聯網使用情況研究報告[R/
OL].(2020-05-13)[2021-12-03].https://www.cnnic.
cn/hlwfzyj/hlwxzbg/qsnbg/202005/P020200513370
410784435.pdf.
[2] 第47次中國互聯網絡發展狀況統計報告[R/OL].
(2021-02-03)[2021-12-01].http://www.cnnic.cn/
hlwfzyj/hlwxzbg/hlwtjbg/202102/P0202102033346
33480104.pdf.
[3] 夏云,李春暉.教育游戲融入小學英語教學的模式構
建[J].電化教育研究,2012,33(2):117-120.
[4] 教育部關于印發義務教育語文等學科課程標準(2011
年版)的通知[A/OL].(2012-01-13)[2021-12-25].
http://www.moe.gov.cn/srcsite/A26/s8001/20111
2/t20111228_167340.html.
[5] 周敦鸞,周蕓夙.對“相反數”的教學感悟[J].中
學數學教學參考,2017(12):15,17.
[6] 張修磊.基于Unity3D的初中物理教育游戲設計與應
用研究:以“科學探究:牛頓第一定律”為例[D].
上海:華東師范大學,2016.
作者:鄭清生,江西科技師范大學,研究方向為虛擬現實技術、教育游戲(330038);代君,九江學院,研究方向為虛擬現實技術(332005)。