- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Unity3D的手机游戏开发.doc
基于Unity3D的手机游戏开发
摘 要
介绍了一款基于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动画系统设计玩家的移动状态机,结合状态机设计手机手柄控制玩家移动技术。
(5)设计玩家七大攻击技能模块的成长技能系统,配置游戏道具数据创建XML表,读取XML表信息使用字典来刷新统一管理游戏数据技术。
(6)完成UI界面设计排版,打包做成预制件,控制游戏界面的加载和销毁技术。
(7)设计实现三类敌人AI(蜘蛛,机器人,大boss)人工智能,使用大量的射线碰撞检测,向量(例如点乘,叉乘)知识完成交互式攻击技术。
(8)实例化各类技能(火系,水系,千里眼,螺旋转,保护,法宝,瞬移),通过协程,视线追逐算法控制技能的移动方式以及攻击方式技术。
(9)完成游戏的C#脚本的逻辑算法实现,内容涉及到游戏玩法,关卡逻辑,数据刷新,怪物的人工智能。
3 手机游戏客户端的设计与实现过程
3.1 手机滑屏控制模式的实现
实现在PC端与手机端的滑屏效果,通过屏幕上下左右中间的虚拟十字架的坐标,控制移动和定位相机位置,屏幕滑动的运动方式分为两部分:
(1)手指(鼠标)拖动相?C带动屏幕移动。
(2)当移动的距离超过一定距离时候同时释放手指(鼠标)相机将会自动弹簧式的移动到定位目的地,实现了上下左右滑动屏幕。手机上下左右滑动屏幕可以摄像机照射的位置弹簧式的移动到指定位置。
算法分析
//当鼠标按下的时候
if(input.GetMouseButtonDown)
//记录手指按下的位置
posDown = input.GetMouseButtonDown
//当鼠标按住的时候
if(input.GetMouseButton)
//判断是水平滑动还是左右滑动 , System.Math.Abs()获取绝对值;
xValue = System.Math.Abs(input.MousePosition.x?CposDown.x)
Value = System.Math.Abs(input.MousePosition.y?CposDown.y)
//左右移动的值大于上下移动的值
if(xValueyValue)
//左右水平滑动,固定射线机位置的垂直分量的值
//左右移动的值小于上下移动的值
elseif(xValueyValue)
//上下垂直滑动,固定射线机位置的水平分量的值
//鼠标抬起时刻
if(input.GetMouseButtonUp)
//判断鼠标滑动的值,有没有超过的滑动sliderValue
if(xValuesliderValue)
//使射线机移动指定位置
else
//滑动值太小,使摄像机移动起始位置
3.2 游戏虚拟杆控制的实现
通过继承NGUI中Drawdropi
文档评论(0)