Vol.25No.8JournalofBeijingInstituteofGraphicCommunication2017Dec.年201712月一种基于Unity和JOYSTICK传感器的
2D游戏设计与实现
史羽天,程明智,徐秀梅
(北京印刷学院,北京102600)
摘
要:针对现在大部分计算机类的单机小游戏基本是通过鼠标或者键盘控制的,智能手机的显示屏又过于小,游戏玩家无
法在游戏中享受大屏的同时,享受交互式沉浸即视感所带来的游戏乐趣,由此观点出发,设计了一款由Joystick传感器控制代替键盘控制的Arduino开发板,并将它应用在2D单机游戏的相关应用中。经测试证明,通过实现Arduino开发板与Joystick传感器的巧妙结合,既摆脱了传统的单机游戏通过键盘鼠标控制的固有模式,增加了用户沉浸式的体验感,而且Joystick传感器以及Arduino开发板既轻便,又易携带,同时利用了Unity3D发布平台多样化的特性,对今后的体感游戏开发具有较高的应用价值。
关键词:Arduino开发板;Unity3D;Joystick传感器;体感游戏中图分类号:TP39
文献标志码:A
文章编号:1004-8626(2017)08-0017-04
DesignandImplementationof2DGameBasedonUnityandJOYSTICKSensor
(BeijingInstituteShiofGraphicYutian,ChengCommunication,Mingzhi,XuBeijing,Xiumei
China102600)
Abstract:Nowmostofthecomputersinglegameisbasicallycontrolledbymouseorkeyboard.Andthedisplayscreenofsmartphonepointissosmallthatplayerscan'tenjoythebigscreeninthegameorthefunofinteractiveimmersingimmediatesense.Fromthisincan2Dofsingleview,thispaperdesignsaArduinodevelopmentboardwhichiscontrolledbyJoysticksensorinsteadofkeyboardandappliesitperiencegetridfeaturesofofgameusers.theinherentapplications.ThetestprovesthatthroughskillfulcombinationofArduinodevelopmentboardandJoysticksensor,weMeanwhile,modeJoystickofthetraditionalsensorsingleplayergamecontrolledbykeyboardandmouse,andimprovetheimmersiveex⁃Keywords:ofUnity3DArduinopublishingdevelopmentplatform,board;whichandUnity3DhasArduinogreat;Joystickapplicationdevelopmentsensor;valueboardarelightandportable,takingadvantageofthediversesomatosensorytothedevelopmentgame
ofsomatosensorygameinthefuture.一、引言
似于人的感官,有了触觉、味觉、嗅觉,将采集到的信息传递随着输入输出设备在游戏市场地不断发展,HTCvive等给游戏引擎,让输入设备变的灵活多变,用户的沉浸式体验VR感得到了进一步地增强。
来越多的用户不满足于单纯地使用鼠标键盘操作游戏,头盔设备,动作捕捉设备,Kinect体感设备等层出不穷,传感越随着虚拟现实(VR)、增强现实(AR)以及混合现实器在人们心中的地位越来越高。与传统的输入设备(键盘、(MR)等高精尖技术的迅速发展,动作捕捉设备、头戴式设备鼠标或手机触屏)相比,采用智能传感器设备虽然没有传统和数据手套等最新的输入输出设备逐渐地被人们所熟知,而输入设备认可度高、获取途径便捷、应用范围广,但在各类游在这其中有很多部分都应用传感器来实现。但是由于目前戏引入触目的今天比比皆是,加之Unity较其他引擎有着兼虚拟现实设备价格昂贵,内容缺乏广泛的适应人群,除了一容性极好的优点,传感器地应用有着不可估量的作用。传感些游戏发烧友之外,人们大多数不愿意为这样的游戏设备付器能够感知被测量的信息,并按照一定的规律变换成为电信出一个昂贵的价格。传感器结合电路板智能控制操作的应号或者其他所需形式信息输出,让各类应用慢慢变得活起用如雨后春笋般涌入游戏市场。
来。简单来说,传感器的存在和发展,让传统的应用有的类
本文所设计的一种基于Unity由ArduinoLeonardo开发
收稿日期:2017-06-30
18北京印刷学院学报2017年板结合joystick传感器,实现了将Joystick传感器的动作映射给键盘的键值,而且还实现了在PC端将这个智能控件与OS行两次开发和移植,X、iOS、Android、Xbox360就能够将作品简单地部署到对应的平、PS3、和Web等。用户不需要进Unity台,既节约了大量的时间,也能少消耗精力。在移动互联网款智能控件的应用具有通用性,制作的游戏内容有机结合实现交互性的操作效果。这可将其触类旁通至任何用键应用比比皆是的今天,Unity3D引擎正受到越来越多人的盘控制的游戏或者应用,都能够使游戏应用摆脱传统鼠标键关注。
盘控制,将用户的体验感提升了一个层次。
(三)Arduino开发板
二、系统软硬件介绍
硬件系统包括PC、PS2摇杆智能传感器、Arduino的leo⁃nadoDavidArduinoCuartielles是2005和Massimo年1月由米兰交互设计学院的两位教师
放原始代码的SimpleI/O平台,Banzi该平台由两部分组成:联合创建,是一块基于开
硬件VS2012型号电路板、USB转接口;(包括微处理器、电路板等)和软件(编程接口和语言)。平大体介绍。
、NGUI插件、Photoshop。下面是对一部分软硬件的软件系统包括UNITY、台的两部分都是开源的,Arduino具有类似java、C语言的开(一)Joystick传感器
发环境,可以快速使用Arduino语言与Flash或Processing等本文用到的Joystick传感器,模块采用日本ALPS正品全软件完成互动作品。Arduino能够使用开发完成的电子元新原装摇杆电位器,可以输出X,Y轴两路模拟信号和一路中件,如Switch、Sensors或其他控制器、LED、步进电机或其他键确认数字信号,常常应用于航模遥控器、玩具遥控器和游输入/输出装置,同时Arduino也可以成为独立与软件沟通的戏机等设备。本文所用的JOYSTICK传感器包含五个引脚:平台,如flash、Processing、Max/MSP或其它互动软件。Ardui⁃Vcc地、、XGND方向的变化量、、VRx、VRy、SW(switchY方向的变化量以及按钮控制是否按即按钮)分别表示接电源、接no台,在开发之初,于对其进行两次开发。就明确了其应用环境,Arduino程序开发接口免费下载,设计了开源开放的平下。按照阻值的不同,常用的Joystick传感器有10k的和5k也可依需求自己修改。可以采用USB接口供电,不需外接电的,本文所用的传感器工作原理是靠一个金属片摩擦碳膜,源,支持ISP线上烧入器,将Bootloader固件烧入芯片。只通过金属片在碳膜上不同的位置来判断移动位置。传感器需使用USB电缆将其连接到计算机,或使用AC-to-DC适配内部结构如图1所示。
器或电池为其供电即可开始使用。
文中以Arduino“Arduino系统针对不同的应用环境开发了不同的版本,
Leonardo”版本为例介绍,与其他类型开发
板不同之处在于具有内置的USB通讯,无须使用辅助处理器。这允许Leonardo作为鼠标和键盘出现在连接的计算机上,以及虚拟(CDC)串口或COM端口。利用Arduino制作模块,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可更简单地达成单人或多人游戏互动。Arduino的功能特点,使其得到了越来越广泛的应用。
图2ArduinoLeonardo的外部结构示意图
图1传感器内部结构简图
(二)Unity3D游戏引擎
ArduinoLeonardo外部结构示意图如图2所示,其结构包
跨平台的游戏引擎,Unity3D是由UnityUnity3DTechnologies开发了一个近乎完美的游戏开公司开发的一款专业的
括以下几个部分:①1个5V的电源输入,②1个USB口,通过该口连接到计算机,由Arduino的IDE将用户写好的控制程序上传到控制板中,同时还可以通过该口为电路板供电,驱发生态链,开发人员可以通过它轻松地实现各种游戏创意和
动小功率的外部设备;③13个数字输入/输出端,其中端口0三维互动开发,制作出精彩的2D和3D游戏项目,最终一键(RX)和1(TX)分别连接主控芯片的串行引脚,用来接收和部署到各类游戏平台上,同时该引擎还可以在AssetStore(资发送TTL串行数据;④6个模拟输入/输出端;⑤1个5VDC输源商店)上分享和下载相关的游戏资源。
出;⑥1个复位接口。
三、Arduino开发板连接Joystick传感器的设计原理与开发引擎,Unity3DUnity是一款在国际上处于遥遥领先地位的专业游戏编辑器可以在Windows和MacOSX平台上实现
运行,其最显著的特点是只要通过一次开发就可以部署在目
(一)总体工作原理
前所有主流的游戏平台上,其中包括Windows、Linux、Mac
总体的工作原理如图3所示,本文用到的Joystick传感第8期史羽天,程明智,徐秀梅:一种基于Unity和JOYSTICK传感器的2D游戏设计与实现19
器可以输出X,Y轴两路模拟信号和一路中键确认数字信号,“main()函数”,Setup函数中,pinMode函数式数字I/O口输入我们所用到的是X,Y轴两路模拟信号。
输出定义函数,可以定0~13引脚的输入输出状态,INPUT与OUTPUTloop分别表示输入和输出模式。通过digitalRead读取出模式。下面是部分代码节选及解释:
函数中的电平值的高低,来设置输出端口的电平值及输#defineSerial.begin(9600);JoyStick_X0Keyboard.begin(9600);
图3整体工作原理说明图
Int将Joystick传感器稳定在一个水平面上,当操作者进行x=analogRead(JoyStick_X);x,y,z;
扳动传感器的摇杆时,将传感器采集到的数据通过串口传输Serial.print(x);
到pc机上。再将读到的数据进行解析后再通过控制模块处if(x>0理输出的数据,将按键的返回值区间进行设定,不同的X,Y{&&x<256&&y>256&&y<768)返回值生成不同的位置区域,最终通过代码实现映射相应键delay(20);
Keyboard.press(KEY_UP_ARROW);值的效果。
(二)Joystick传感器接口设计及实现
首先将Keyboard.releaseAllJoystick传感器控制();}
X,Y的引脚接在模拟输入A0串口通信输出数值,,A1上,定义x,y模拟输入接下来判断当JoyStickx,y传感器的的值分别在X,0Y到,并通过地模拟电脑键盘的输入,ArduinoLeonardo自带模拟下面简单地讲解模拟电脑键盘的实USBHID的功能,可以很轻易
256之现过程。
间,256到768之间时,向电脑发送“↑”按键的指令,延迟一
基于Joystick传感器接口主要用于监听并获取传感器的定的时间触发,再向电脑发送按键释放指令。
按钮推动事件,包括上、下、左、右的推动事件,试验中,该传四、在Unity3D中设计并实现2D游戏“拾荒者”感器接口采用C语言开发,并最终模拟电脑键盘的键值连接(一)游戏制作过程
Unity游戏制作过程主要包括步骤如图5所示
所示。
中的内容使用。该传感器的按键返回值情况如下图4图5制作内容步骤
精灵图片,1.导入资源包括在逐帧动画所需图片,Unity3DNGUI中设计并制作内容所需的插件的导入以及部分内UI
容设置为预制体。搭建好的场景内容以及文件界面如图6所示。
图4Joystick传感器返回键值说明图
该接口程序模拟键盘上“↑”“↓”“←”“→”按键事件,将X实现。
,Y方向的数值进行设置,当在某一个范围内实现按键的(三)Arduino映射原理实现
(微控制器Arduino)相关的一些参数设置模式化包括语言是建立在C/C++基础上的,EEPROM将AVR单片机
、以太图6制作内容准备工作
网、LED矩阵等控制程序库,不需要直接地处理底层系统,一
定程度上提高开发效率。
同数量的2.在场景中导入UI精灵,并重命名每个按键的名称,NGUI插件,创建与传感器上的按键相
将每个按键作
体的一个程序构架。Arduino语言是以Setupsetup(())函数用来初始化变量、函数开头,loop()函数作为主为父级,创建该按键的子精灵特效,用于挂脚本,将脚本文件管脚模式、调用库函数等,该函数只运行一次,功能类似C语言中的
GameManager.cs该对象,以减少资源消耗,做成预制体,只在场景运行时出现。
实例化后,在层次视图中删除20北京印刷学院学报2017年(二)脚本文件创建
表1脚本文件创建
脚本名称实现内容
AudioManager.实现声音特效的生成(包括主角行为以
cs及背景音乐等)
Enemy.cs实现敌人跟踪主角的设计(包括敌人碰
到主角的攻击特效等)
图7Joystick传感器与Arduino连接效果图
GameManager.cs实现游戏的物体销毁以及NGUI的加分
机制
Loader.cs实现场景的加载切换
MapManager.cs实现地图上障碍物食物等所有UI的随机
生成实现
Player.cs控制主角的行走方式,碰撞检测以及死
图8游戏界面效果图
亡机制
Wall.cs控制周边围墙的随机生成
五、结语
本文主要研究的是基于Unity3D由Joystick传感器通过下面以UI精灵图片的随机生成的实现方法为例进行说明:
Arduino相关的基础数学思想,映射电脑键盘到内容的映射,同时利用了基于深入地分析了和映射PC平台的传感器接(1)在MapManager.cs脚本文件中,通过语句Random=UnityEnagin.Random口与Unity的结合,以及NGUI具体的使用,对利用Arduino模块连接外接设备模拟键盘鼠标事件来监听并获取对象的电(2)定义变量部分添加命名空间。
:定义GameObject数组为公有变量,并
平值,进而实现内容的交互,应用到开发单机游戏上和体感定义行数和列数的值为10,设定随机生成最大值maxCount⁃Wall游戏具有一定的参考价值。但是,由于受到传感器本身性能的限制,传感器上的摇杆触发键盘还会有一些延迟的现象,信息。
和最小值minCountWall的区间,当然还有变量存放位置所以如何使这套模块更加灵敏,可操作性更强将是后续研究(3)初始化地图InitMap,并通过循环嵌套实现10*10的的重点。
地图的位置生成,围墙和地板通过Random.Range(0,outWal⁃lArray.Length)参考文献:(4)创建障碍物,实现几种食物和敌人时,UI的随机生成。
并设置这些UI的个数随机生成Random.Range(minCountWall,maxCountWall)。
2010([1]6)翁浩峰:35-37.
.在Flash课件中使用传感器[J].物理通报,(5)InstantiateItems(wallCount,wallArray)。
系统设计[2]袁本华,[J].安徽农业科学,董铮.基于Arduino2012,40(控制板的温室大棚测温8):5049-5050.(6)将GameObject都设置成预制体,这样如果游戏不运行时不会占用内存,例如将“敌人”设定为预制体GameOb⁃[3]李德骏,马孝辉.基于Arduino平台的家用安防监控jectenemyPrefab系统设计[J].科技与生活,2011(1):114(7)并且实例化这些预制体=RandomPrefab(prefabs)Instantiate(enemyPrefab,pos,。京:中国铁道出版社[4]UnityTechnologies,2013:2-28.主编.Unity4.x从入门到精通[M].北Quaternion.identity)(8)最后将实例化的预制体发送给父类对象地图生成器。
出版社[5],2015:1-42.
高雪松.UNITY3DNGUI实战教程[M].北京:人民邮电go.transform.SetParent(mapHolder)(三)游戏操作方式以及界面效果
。
设[J].[6]机电产品开发与创新,杨继志,杨宇环.基于2012Arduino,25(1的网络互动产品创新):99-100.本文最后将该模块应用于开发一款“拾荒者”的Unity2D小游戏中。摆脱传统的键盘操作方式,通过Joystick传感器都电子科技大学,[7]石晓旻.游戏引擎扩展脚本技术的研究及实现2005:12-15.[D].成的操作实现小游戏,即推动摇杆的四个方向可实现键盘的上下左右,进而实现主角的移动。Joystick传感器与Arduino连重庆:[8]重庆大学,陈占锋.Torque2008:5-6.
游戏引擎及脚本技术的应用研究[D].接如图游戏内容界面图如图7所示,游戏内容界面如图8所示。
西安工业大学学报,[9]朱耀林,王晓雨2015,35(9):720-724.
.基于Kinect的虚拟鼠标体感交互[J].“拾荒者”小游戏玩法:游戏玩家可以按照屏幕上出现的主角、食物、障碍物以及敌人的位置操作摇杆,初始能量为计与实现[10]陶健林,[J].商丘师范学院学报,吴洋.体感交互在虚拟校园漫游系统中的设2014,30(12):62-65.10敌人每攻击能量会减,每移动一步,能量会减20,在能量不低于1,每吃到一次食物可以加0时走到出口即可进10,被[11]王树军.三维游戏引擎中物理引擎关键技术的研究
入下一关卡,最终能量小于0时游戏失败。
[D].天津大学,2007:5-7.
(责任编辑:张啸寒)
因篇幅问题不能全部显示,请点此查看更多更全内容