龙源期刊网 http://www.qikan.com.cn
基于Unity3D的手机游戏开发
作者:陈雪梅
来源:《电子技术与软件工程》2016年第23期
摘 要
介绍了一款基于unity开发的轻量级手机游戏开发过程,探讨在Unity3D平台下完成游戏关卡,场景以及功能模块的设计过程,提出实现Unity3D手机游戏开发采用的核心技术及核心代码,可供开发人员提供解决游戏开发问题的思路。 【关键词】Unity3d Vector 手机游戏 1 引言
Unity3d是由Unity Technologies 公司开发的跨平台专业游戏引擎,是如今市场上一款全面整合的专业游戏引擎,软件其编辑器可运行在Windows 和Mac OS X双系统下,利用其所开发的游戏可发布至Windows、Mac、Wii、iphone、Windows phone 8和Android平台。Unity游戏引擎作为一款跨平台的游戏开发工具,其具有开发快速,易上手,跨平台发布,可扩展性强等特点。这里论述开发了一款3D格斗类手机游戏的过程,着重解决了屏幕自适应,屏幕滑动模式,美术资源管理,手柄控制,角色动画状态机,敌人AI交互设计,动态数据读取刷新,攻击技能成长系统设计,场景七大攻击技能释放与控制,单机副本以及厢房挑战关卡设计与实现等一系列问题,对其它类型的游戏开发具有一定的借鉴与学习参考的意义。 2 手机游戏开发关键技术
基于Unity的手机游戏开发,手机游戏主要包含主屏幕滑屏,界面刷新,技能成长系统,虚拟杆控制,场景技能释放,怪物AI设计等多大功能模块设计,实现并开发游戏,设计主要的关键技术及过程有:
(1)通过数值计算,设计屏幕自适应技术。
(2)初步研究实现PC端和手机端的触屏控制,通过Touch类和Input类设计实现在不同平台的“十字架”滑屏技术。
(3)通过把二维空间向量转三维空间向量的方法,实现游戏手柄的功能控制技术。 (4)使用Mecanim动画系统设计玩家的移动状态机,结合状态机设计手机手柄控制玩家移动技术。
龙源期刊网 http://www.qikan.com.cn
(5)设计玩家七大攻击技能模块的成长技能系统,配置游戏道具数据创建XML表,读取XML表信息使用字典来刷新统一管理游戏数据技术。
(6)完成UI界面设计排版,打包做成预制件,控制游戏界面的加载和销毁技术。 (7)设计实现三类敌人AI(蜘蛛,机器人,大boss)人工智能,使用大量的射线碰撞检测,向量(例如点乘,叉乘)知识完成交互式攻击技术。
(8)实例化各类技能(火系,水系,千里眼,螺旋转,保护,法宝,瞬移),通过协程,视线追逐算法控制技能的移动方式以及攻击方式技术。
(9)完成游戏的C#脚本的逻辑算法实现,内容涉及到游戏玩法,关卡逻辑,数据刷新,怪物的人工智能。
3 手机游戏客户端的设计与实现过程 3.1 手机滑屏控制模式的实现
实现在PC端与手机端的滑屏效果,通过屏幕上下左右中间的虚拟十字架的坐标,控制移动和定位相机位置,屏幕滑动的运动方式分为两部分: (1)手指(鼠标)拖动相机带动屏幕移动。
(2)当移动的距离超过一定距离时候同时释放手指(鼠标)相机将会自动弹簧式的移动到定位目的地,实现了上下左右滑动屏幕。手机上下左右滑动屏幕可以摄像机照射的位置弹簧式的移动到指定位置。 算法分析
//当鼠标按下的时候
if(input.GetMouseButtonDown) //记录手指按下的位置
posDown = input.GetMouseButtonDown //当鼠标按住的时候 if(input.GetMouseButton)
//判断是水平滑动还是左右滑动 , System.Math.Abs()获取绝对值;
龙源期刊网 http://www.qikan.com.cn
xValue = System.Math.Abs(input.MousePosition.x–posDown.x) Value = System.Math.Abs(input.MousePosition.y–posDown.y) //左右移动的值大于上下移动的值 if(xValue>yValue)
//左右水平滑动,固定射线机位置的垂直分量的值 //左右移动的值小于上下移动的值 elseif(xValue
//上下垂直滑动,固定射线机位置的水平分量的值 //鼠标抬起时刻
if(input.GetMouseButtonUp)
//判断鼠标滑动的值,有没有超过的滑动sliderValue if(xValue>sliderValue) //使射线机移动指定位置 else
//滑动值太小,使摄像机移动起始位置 3.2 游戏虚拟杆控制的实现
通过继承NGUI中Drawdropitem类实现鼠标和手指可拖动圆球状态。根据虚拟杆的大小,设计限制虚拟杆的移动圆球移动范围离中心点的距离小于100,当距离大于100时,限制距离为100。接着中心圆球的位置到虚拟杆中心位置的向量方向控制玩家角色的移动方向,紧接着根据中心可移动圆球离虚拟杆中心位置的距离长度控制玩家角色的移动速度,整个二维平面的虚拟杆360度旋转移动,映射到玩家在三维空间的移动。最后根据鼠标和手指的状态控制中心圆球的初始状态,当鼠标和手指离开时候,中心圆球将会重新回归虚拟杆的中心位置,此时玩家将处于休闲不移动的状态,当鼠标或者手指拖动中心圆球时候,将启动控制玩家角色的移动状态。 算法分析
基于Unity3D的手机游戏开发



