基于Unity 3D的摩托车安全驾驶游戏

2021-03-22 02:53万政李娟罗宇飞张海旭李一帆
电脑知识与技术 2021年4期
关键词:安全意识

万政 李娟 罗宇飞 张海旭 李一帆

摘要:根据《中华人民共和国道路交通安全法》规定,摩托车驾驶过程中,驾驶者需佩戴好安全头盔以保护自己的生命安全。然而实际生活中,驾驶者对于摩托车驾驶的交通安全意识不足,不了解头盔的重要性,经常驾驶摩托车时不佩戴头盔。为预防此类摩托车交通事故的发生,笔者开发了一款基于Unity 3D的摩托车安全驾驶游戏。该游戏利用Unity 3D的强大性能,模拟摩托车驾驶,让驾驶人通过游戏强化安全意识,学习安全法规,自主佩戴安全头盔,最终保护生命安全。

关键词:游戏开发;佩戴头盔;模拟现实;安全意识

中图分类号:TP311.1      文献标识码:A

文章编号:1009-3044(2021)04-0074-03

Abstract: According to the Law of Peoples Republic of China on Road Traffic Safety, motorcyclists must wear helmets. But in reality, motorcyclists often fail to do that, which is caused by their poor awareness of traffic safety and insufficient recognition of helmets. In order to prevent the motorbike accidents caused by the above reasons, our team invents a motor driving game based on Unity 3D, helping to raise peoples awareness of traffic safety. This game absorbs the knowledge of traffic rules and reflects that in its virtual motor driving scenes supported by Unity 3D. In this way, the users can strengthen their awareness of traffic safety, developing the habit of wearing helmets, and eventually, saving lives of their own

Key words: game development; wearing helmets; virtual reality; awareness of safety

1 背景

安全头盔即安全帽作为一种新型防具,可以缓冲对头颅的伤害,能够有效地将安全赋予驾驶员,是骑行者在交通事故中的最后的生命安全防线。然而,经过对交通安全事故的深度考察,发现大多数人对于摩托车驾驶的安全意识不足,在日常出行中都轻装上阵,以至于当交通变故产生时,造成不可弥补的结果。事实上,交通法规是用一场场血与泪的教训总结出的行车规范,是用来保护摩托车驾驶员以及正常行走路人的生命健康,而不是一群人根据自己的喜好而制定出来的,它的目的是保护大家的生命安全。

随着信息技术的不断发展,游戏产业也成为互联网产业市场中增长速度最快的热点,并已在计算机、移动设备等多个平台得到普及[1]。而Unity 3D因其自带的功能包含游戏制作、美术绘画、3D建模、影视特效等功能,成為一款最流行的开发引擎。本游戏也是基于其强大的特性,采用Unity 3D技术,开发出的一款模拟摩托车安全驾驶的游戏,呼吁人们在骑摩托车时应当依照规定佩戴头盔,恪守交通法规,保护自己的生命安全。

2 国内安全现状

当代社会,代步工具种类繁多,摩托车以其体积较小、极具灵活性的特点风靡全国。然而,许多的安全隐患也伴随而来。从交通部门获悉,在最近一年的交通安全事故报告中,关于摩托车的死亡的人数就多达上万人,他们当中极大一部分人都是由于头部受到重伤而亡。因人体头部结构比较特殊,轻微的撞击就易造成脑震荡,而对于交通事故,剧烈的撞击必不可少,头部的保护也就成为安全驾驶的必修课,安全头盔成为必选的工具。对于相当一部分人来说,他们缺乏对安全帽功能的了解,当交通警察在对佩戴头盔的驾驶员进行检查时,都浅显的认为该行为只是为了开罚单,而没有意识到安全的重要性。

一名按照规范佩戴安全帽的摩托车司机,因意外而发生交通事故时,安全帽能很好保护好配戴者的头部,头盔内的缓冲层和内衬层有效缓解在碰撞瞬间产生力,从而抵消一部分外力对头颅的冲击。我们也发现,倘若我们去大力地宣传安全意识,在各个路口挂上有关安全提示的标语,每时每刻告诉市民安全行车的必要性,牢记把我们的生命安全放在第一的原则,将有效地提升市民学会预防事故,不让悲剧在自己的家庭上演。

综上所述,一款能够宣传安全意识的模拟驾驶游戏能够有效地帮助人们提升自我安全意识。

3 关键技术——Unity 3D引擎技术

Unity是由丹麦Unity公司开发的游戏开发工具,因包含整合的编辑器、跨平台发布、地形编辑、着色器、脚本、网络、物理、版本控制等一些特性[2],一举成为当前国际开发引擎界的掌舵者,同时可视化编辑器作为其新的特性,深受开发者喜爱,倘若开发者有什么新颖的想法,可以立刻在引擎上实现,而这种实时的编辑,测试,运行功能,能有效地提升制作者与游戏项目的交流。它让开发者能够在一定学习的基础上通过简单的操作制作出简易的小游戏,再加上其“免费+收费”相结合的运营模式,使之逐渐成为国内的主流游戏引擎。

在具体功能方面,Unity 3D不仅提供了2D与3D游戏制作所需要的功能,还包括地形系统、物理系统、刚体、碰撞器、光照、粒子系统在内的强大功能,这也是为什么它可以作为VR、AR游戏开发的首选引擎。Unity 3D集各功能于一体,让开发人员仅通过一款程序内完成游戏开发的大部分工作,有效地降低程序的开发时长。

基于Unity 3D的跨平台性和极其完善的深层技术结构,摩托车安全驾驶游戏便逐渐建立起来。

4 游戏总体设计

4.1 总体思路

《Go Home》作为一款3D摩托车跑酷类游戏,游戏的主体为下午五点,迎来了下班的高峰期,艾克斯也到了回家的时间,由于回家路途较远,他需要驾驶自己的摩托车回家,为了自身的生命不受到威胁,他需佩戴好安全头盔,恪守交通法规,最后平安的回到家中,而期间会出现各种突发情况,倘若在途中发生了交通事故,那么这个时候头盔将取到关键性作用,它能够有效地保护角色降低伤害,甚至在关键时刻起到保护生命的作用。

4.2 游戏流程

一款游戏的可玩性是该游戏可以长期运行的基础。游戏的可玩性指的是玩家与游戏世界或者游戏世界对玩家所做出反应的方式[3]。该游戏以当前安全教育主题为大背景,游戏环境是我们所熟悉的城市,高楼林立,交通四通八达,路上车辆来来往往,过往的行人来来往往。玩家扮演一名下班后需要安全回家的角色,摩托车作为其代步工具,他得驾驶着自己的摩托车在不违反道路交通安全法的前提下,穿过一条条车水马龙的街道,安全回家。在回家途中,他可能经过红绿灯,可能碰见行人过斑马线,或者道路上的路障,如此种种,他需要安全的规避,以达到安全回家的目的。除此之外,游戏当中还增设了大量的游戏道具,比如金币、血包等,而金币的收益可以在商城为角色购买道具,像更好的摩托车,更高级的头盔等等。

5 游戏设计

5.1 游戏场景搭建

场景是Unity 3D程序的基本组成单位,任何一个Unity 3D程序都是由若干场景组合而成,程序通过脚本在这些场景之间转换[4]。作为一款教育类游戏,其场景的搭建是整個游戏环节首要部分,Unity 3D以其完美的开发性能,极好的实现了游戏场景搭建。随着该软件的更新,从Unity 3D 5.0开始,项目开发所需要的资源便不再是软件自带,而需要国内的开发者到其官网或者软件自带的商店下载StandardAssets,下载完成后,找到Project面板下的Assets组件的面板位置,然后找到ImportPackage面板下的CustomPackage组件所在后点击该组件即可将下载好后的资源包导入到unity中。导入时需要注意的是,资源包所含有的2D、Cameras、Characters等12个文件需全部导入,如果只导入项目所需文件可能会导一系列报错,带来不必要的麻烦。

创建一个Unity 3D项目,将其命名为Firstscence,场景会自动创建一个主相机(MainCamera)和方向灯(DirectionalLight)。前者用来记录Game界面,对于后者,我们可以通过对其位置、角度、范围大小的调整,来调整对游戏场景的渲染程度,从而使场景更加自然,虚拟现实的效果更加高效化。点击菜单Game Object中的3D Object中的Plane,多次操作后,继续通过调整所需Inspector面板当中的各类相关参数以达到所需效果,该游戏的场景便简单搭建实现。如图1场景搭建。

5.2 游戏设计

1)游戏障碍物的设计

由于该游戏是作为一个摩托车安全驾驶游戏软件的示例,因此游戏中涉及一小部分的学习内容,学习内容包括法律知识和基本的道德准则,为实现以上内容,需建构相关的模型。Unity 3D以其能集各性能于一体的优秀性,3D建模是其基本功能,开发者可以通过该引擎进行建模,为了方便操作,可在网上下载相关的模型,但通过导入的模型通常情况下都是不适配的。为此,对于导入的模型,需对其Inspector面板中的Model、Rig、Animation、Materials中的相关参数进行调配,同时为了适配场景,模型的形状和大小需要进行一定的调整,获得最佳效果。汽车模型如图2所示,为了给模型增设重力系统以获得更好的逼真成果,需对其添加刚体组件,若多个对象添加,还可因为两对象发生碰撞而产生位移,然后再给物体添加物理材质,从而达到两个对象发生碰撞后所需的摩擦力和反弹效果。

2)碰撞检验

虚拟现实最重要的是为了体现真实物体的物理特性还需要在触觉上进行设计,而触觉上的设计需要虚拟世界中的物体对象可以相互接触并存在着碰撞反应[5]。碰撞检测是实现该效果的主要方法,从概念上来讲,当一个实体与另一个实体接触时,二者所产生的形状、位移等的变化都可以称作碰撞。在Unity 3D所含有的函数种类繁多,碰撞检测在其中就有相对应的函数,其主要功能为实现游戏中碰撞的侦测,实现过程如下,对于两个或多个将在某时刻需实现碰撞的实体,在其中一方添加Rigidbody,而碰撞产生时的双方添加Colider,碰撞检测函数如图3所示,当发生碰撞时,便会瞬间实现碰撞检测函数内的代码,如销毁物体,播放音乐,实现粒子效果等。

对于摩托车驾驶游戏,通过调取OnCollisionEnter()的方法来解决相关的碰撞检测,当摩托车碰撞到汽车模型时便会被摧毁,游戏结束,资源中的相关动画特效也在这一刻实现,游戏当中的道具拾取等功能也需通过触发器实现。

5.3 摩托车玩家设计

摩托车在行驶过程中,为给玩家带来驾驶摩托车的虚拟真实效果,开发者给玩家设置了两个视角——两个摄像机。在一个场景中,相机虽然能够有多个共存,但玩家在游戏界面的视角仅能由一个摄像机提供。由于在游戏搭建部分已经创建了一个视角,但需将其位置调至摩托车后方,镜头视角为摩托车方向,同时还需在摩托车的驾驶位放置一个摄像机,两个摄像机的镜头的切换可以用C#语言达到效果。在驾驶方面,通过键盘上的四个按键WASD来实现摩托车的前后左右的行驶,摩托车的加速功能通过按键e来实现,但其速度设置了一个上限,当达到该上限时速度便不再变化。摩托车驾驶展示如图4所示。

5.4 调试与完善

一款优秀的游戏,需对其不断地进行测试,发现其中漏洞和不足。游戏测试有多种方式,有第一阶段的单元测试、第二阶段的集成测试、采用黑盒法的系统测试、以及最后的验收测试,每一阶段都会产生相对应的测试报告,开发者再依据其相干数据对游戏进行改善,不断地测试,不断地修改,以达到最佳游戏效果。

6 结束语

本项目基于Unity 3D所具备的完善性能,以及C#语言的脚本的完美配合,成功地设计出一款教育玩家在摩托车驾驶时,需安全佩戴头盔并且守法的游戏。本游戏在给玩家带来娱乐的同时,也能够帮助玩家提高安全意识,规避在实际操作中的低级错误,将佩戴头盔作为摩托驾驶的前提要求,为了自己也为了家人,安全上路,最终起到寓教于乐的作用。虽然本项目通过Unity 3D实现了摩托车虚拟驾驶的基础性功能,但由于笔者在Unity 3D引擎的研究时间和目前自身的研究水平有限,在虚拟驾驶的实现方面还有很多的不足,随着对其研究的深入和特性的挖掘和自身的学习,相信这都将会得到改善,游戏中的虚拟化场景将更加丰富和更具趣味性,人机交互系统也会大幅度的提升。

参考文献:

[1] 李莉,曾晓燕,李锴,等.基于unity3d的模拟驾驶游戏[J].计算机产品与流通,2020(9):117-118.

[2] 徐敏,童强.一种基于Unity3D+Vuforia的增强现实交互App的开发[J].现代计算机(专业版),2016(12):71-75.

[3] 吴志达.一个基于Unity3d游戏引擎的体感游戏研究与实现[D].广州:中山大学,2012.

[4] 朱柱.基于Unity3D的虚拟实验系统设计与应用研究[D].武汉:华中师范大学,2012.

[5] 曾林森.基于Unity3D的跨平台虚拟驾驶视景仿真研究[D].长沙:中南大学,2013

【通联编辑:谢媛媛】

猜你喜欢
安全意识
幼儿安全意识教育与自我保护能力的培养
在电类实践操作课程中对士官学员安全及规范操作意识的培养
提高安全意识促进健康成长