叶现勇 许向荣 梁启萌
摘 要:在当前疫情暴发的时代背景下,几乎无法走进教室、在家直播成为常态的背景下,新兴的游戏化学习被不断重视并被人们积极鼓励其发展。在游戏化学习之前,游戏与学习间的关系一直处于两个截然相反的两个立场,就如同电磁的正负极。对游戏是否可以用于学习进行研究,得到现有市场中已经出现将游戏运用于学习的产品这一结论。对比各个主流游戏的游戏引擎使用情况以及综合自身条件下,选择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—),男,汉族,河南周口人,本科在读,研究方向:数字媒体技术。