您好,欢迎来到吉趣旅游网。
搜索
您的当前位置:首页基于Unity3D的手机触屏类游戏关键技术研究与实现

基于Unity3D的手机触屏类游戏关键技术研究与实现

来源:吉趣旅游网
2014年4月 三明学院学报 Apr.2014 第31卷第2期 JOURNAL OF SANMING UNIVERSITY Vo1.31 No.2 基于Unity3D的手机触屏类游戏关键技术研究与实现 林剑,张帅,伍传敏 (三明学院信息工程学院,福建三明,365004) 摘要:随着高端智能手机的发展,触屏类手机游戏逐步成为新的娱乐方式。而对于触屏类手机游戏设计与交互 性方面的研究成为新的热点。针对触屏类手机游戏开发中界面趣味性、人机交互性、操作灵活性等共性问题。基于 uI1ity3D触屏事件处理机制,着重于快速完成自定义地形场景、模型动态显示及人工智能等关键技术的研究与实现, 并基于Unity3D游戏引擎开发Android触屏类手机游戏,满足游戏场景真实性、趣味性及交互性。对触屏类手机开发 具有一定的参考价值。 关键词:手机触屏;UIlity3D;人工智能;动态加载;交互设计 中图分类号:TP11.52 文献标识码:A 文章编号:1673—4343(2014)02-0027-05 The Research and Implementation of the Key Technology of the Touch-Screen Mobile Games Based on Unity3D LIN Jian。ZHANG Shuai,WU Chuan—min (Insititute ofInformation Engineering,Sanming University,Sanming 365004,China) Abstract:With the development of hte advanced cellular telephone,touch—screen mobile games have gradually become a new form of entertainment in game development.Then the research of design and interactive of touch—screen mobile games became a new hot spot.Aiming at the common problems such as the interest,human・computer interaction and flexibility of operation in the development of the touch—screen mobile games and using the touch even ̄handing mechanism,this paper researches and implements the key technologies such as rapidly modeling custom terrain scenes,dynamically display of hte models and artificial intelligence and SO on,and develops Android touch-screen mobile games based on Uniyt3D,which sat- isfies the game environment authenticiyt,fimny and interactiviyt,and has a certain reference value in the development of the ‘touch—screen mobile games. ’ Key words:mobile touch—screen;Uniyt3D;artificial intelligence;dynamic loading;interaction desing 基于目前高端智能手机的发展,触屏手机游戏作为下一代游戏产业链中的新亮点,逐渐成为各 大手机制造厂商及动漫游戏公司相互竞争的焦 】。据调查。目前大众最为喜欢的触屏手机游戏主 要有:切水果、捕鱼达人、植物大战僵尸、跑酷、天天爱消除、极品飞车、鳄鱼爱洗澡等【4】。这些游戏的 超高人气主要来自游戏容易上手、玩法的趣味性、场景的逼真性及和谐人机交互性等优势。因此在 手机游戏的设计方面,首先要考虑良好的人机交互性,如玩家能够轻易地退出游戏,并能够在他们 离开的地方继续游戏;其次是游戏画面的逼真性及流畅性,并保证控制要直观、易于掌握;最后是恰 收稿日期:2013-10—16 基金项目:福建省大学生创新创业韧I练计划项目(201311311044,201311311050);国家级大学生创新创业训练计划项 目(201211311006,201211311019); ̄建教育厅科技项目(JA13295) 作者简介:林剑。男,福建泉州人,大学生。研究方向:游戏开发。通讯作者:张帅,女,山西交城人,讲师。研究方向:虚 拟现实与游戏开发。 一28一 三明学院学报 第31卷 当的人工智能,并要求游戏故事情节简单,目标明确,并保证手指与屏幕上手柄的完美匹配。 本文结合三维建模软件Maya进行游戏场景中角色、道具等物品建模。利用Unity3D游戏引擎迅 速高效地创建对象、导入外部资源,基于Unity3D触屏事件处理机制,研究快速完成自定义地形场 景、模型动态显示及人工智能等关键技术.并进行APK文件的发布。最终完成了Android触屏类手 机游戏的开发。 1 Unity3D触屏事件处理机制 1.1输入对象类中Touch方法 在游戏开发过程中经常需要获得用户的输入过程如触控动作相关的各个参数。按键的情况等。 Unity3D在设计平台时专门提供了两个输入对象:Touch 和Input对象。通过这两个对象可以方便地获取用户输 表l Touch方法的变量说明 入的各个参数,包括触控的位置、按下移动的位置、是 变量 描述 哪个键等。 触摸的唯一索引 现今流行的Android平台和IPhone平台都是基于 触摸的位置 屏幕触控的。因此Touch输入对象是开发过程中经常遇 离开触控点的位置 到的问题.也是较难解决的问题。Touch方法可以方便 触控过程所花费的时间 点击次数 的获取用户输入的各种参数,用于记录一个手指触摸在 当前触控事件的描述 屏幕上的状态,变量说明如表l。 只有各个变量相互配合才能完成触屏游戏中物体的交互控制,具体交互方法如下: if(Input.GetTouch(0).phase==Touchphade.Moved)// ̄l果当前事件状态是移动 this.transform.Translate(vector3.forword*speed);//移动一段距离 1.2 Joystick事件处理类 Joystick类是一个专门处理虚拟摇杆事件的类,内置StartGame函数(用于设置虚拟摇杆的贴图 属性及初始位置),ResetJoystick函数(用于重置摇杆所有数据信息,当手指离开触摸屏后,会重置摇 杆的所有数据)。Unity3D内置Update函数作为每帧都执行的函数,用来监听玩家是否有触屏操作, 并进行相应的处理。 在实际应用中应先创建一个Joystick对象并初始化: leftjoy.GetComponent<Joystick—Cs>0.StartGame0; 然后在Update函数中监听摇杆的位置信息: ’ lfoat leftx=leftjoy.GetComponent<Joystick_Cs>0.position.x: lfoat lefty=leftjoy.GetComp0nent<Joystick_Cs>0.position.y; 其中leftx得到的数据是虚拟摇杆在X轴的位置偏离了初始位置的距离,向左偏离为负值,向右偏离 为正值。Lefty得到的数据同理。这样就可以非常方便的得至 玩家操作虚拟摇杆的数据信息。 2手机触屏类游戏关键技术研究 2.1自定义游戏地形 编辑Unity中的地形有3种方法:第一是利用三维建模软件(3DMax,Maya等)建模形成一个游戏 世界的完整3D模型后导入:第二是使用Unity3D自带的笔刷工具动态的在地形表面绘制山峰和谷 底;第三种方法是导入预先渲染好的灰度图。虽然使用3D软件搭建的游戏环境能够一次性导人并 确保所有物品都彼此匹配并精确定位。但是使用Unity3D自带的地形引擎可以高效快速地模拟接近 自然的东西或是现实世界中的,并占用移动终端较少的内存资源。 基本上一幅灰度图就是一幅高度图。它使用2D图像来表示3D的高度变化。采用较暗的灰黑色 来表示较低的高度,用较亮的灰白色来表示较高的高度。导入的灰度图必须是RAW格式。一旦有了 第2期 林剑,等:基于Unity 3D的手机触屏类游戏关键技术研究与实现 一29一 灰度图,就可以将它导入了,Unity会弹出一个对话框显示导入选项,见表2。 表2导入高度图选项设置 选项 Depth(深度) 说明 根据文件格式来设置,可以是8位或16位。 Width(宽度) Height(高度) Byte Order(字节顺序) 高度图的宽度,会根据高度图大小自动得到 高度图的高度。会根据高度图大小自动得到 根据文件格式设置。mac或windows 应设置地形大小与灰度图相匹配 Terrain Size(ttg形大小) 值得注意的是,在对地形高度进行编辑后,还可以地形设置选项中修改细节分辨率(detail reso. 1ution)和贴图分辨率(base texture resolution),但开始制作后,再修改这些选项,会带来巨大的问题。 即修改任何的分辨率数据会导致依赖于此的所有细节信息全部被删除掉。 2.2模型动态显示技术 手机由于硬件的。如果一次性将所有的场景模型全部加载容易造成“卡机”的现象。为了提 高内存的使用效率,并快速完成所需要模型的加载,需要使用模型的动态显示技术。通过编写Ren. derSwitch类获取主角和场景模型的位置信息。通过计算它们之间的距离来判断该模型是否应该被 渲染出来。这样手机就只需要渲染出离主角近的模型而不必将场景中所有的模型都渲染出来。提高 了游戏运行的流畅度。RenderSwitch类算法如下: public class RenderSwitch:MonoBehaviour{ private GameObject[]go;I/定义存储模型的私有变量 void Start 0( ,/将场景所有标签为“senee”的模型存入go数组 go=GameObject.FindGameObjectsWithTag(”sence”);l void Update 0( for(int i=0;i<go.Length;i++)( ,,遍历go数组,检测与主角的距离并通过距离判定该模型是否应被渲染 if(Mathf.Abs(Vector3.Distance(go[i].transform.position,this.transform.position))<=800{ go[i].renderer.enabled=tee;r 】else{ go[i].renderer.enabled=false;J)}} 2.3人工智能技术 一款游戏的好玩与否很大程度上取决于敌人的人工智能,在此主要阐述触屏类游戏AI中经常 用到的自动巡逻算法和自动追踪算法。为了使不同的角色拥有不同的人工智能。会涉及到Unity3D 中一些重要常用的类,具体如下表3。 表3 Unity3D中关于AI设计中常用类 类名 MonoBehaviour 说明 Unity C#脚本所有类都继承它 Quatemion Random Renderer 四元数.自动追踪算法要用到这个类 随机数。人工智能需要大量的用到它 渲染类.用于渲染 一3O一 三明学院学报 第31卷 当然,不同的游戏有着不同的敌人,其人工智能也不尽相同,本文主要实现当敌人看到玩家时 自动追击,否则自动巡逻的敌人智能实现。 首先应该计算出敌人与玩家之间的距离。通过距离判断敌人当前应该进行什么动作。如果距离 小于某个值,则判定玩家进入视野,对玩家进行追击。追击的部分代码如下: transform.rotation=Quaternion.Slerp(transform.rotation,Quaternion.LookRotation(PlayerTarget.trans— form.position—transform.position).Time.dehaTime speed); 其中.Quaternion四元数这个类可以很好地将敌人以time.dehatime*speed的速度向当前目标平滑旋 转追击。 当距离大于某个值时,则判定玩家不在自己周围,从而进入自动巡逻状态。将以上脚本赋予敌 人后。敌人就能够在“看见”玩家的时候自动追击。否则每隔几秒巡逻一个特定的区域。自动巡逻部 分算法如下: ,/敌人每Second秒进行一次思考。思考下一步做什么动作 if(Time.time—sksj>Sec0nd){ sknr=Random.Range(1,3);//定义sknr局部变量,赋予l至3的随机值 sksj=Time.time;//重置思考时间 } switch(sknr){ //Second秒后有三分之一的几率前进。向左或向右巡逻 case 1:rorwordO;break; case 2:leftrotate0;break; case 3:rightrotate0;break;} 3游戏实现 3.1模型动画链接与控制 Unity的动画API非常强大和全面。它还包含集成了动画编辑器。其中Animation类负责对模型 动画剪辑进行播放,组合和混合的所有功能,它从Behavior类派生而来,因此包含我们常看到的一 些函数。变量。在Unity中一个给定游戏对象上所有可以使用的动画都会被赋予一个图层,默认为0, 优先级高的图层能够覆盖低优先级图层的动画。 ’ 通常一个角色都会有一个空闲动画,它会在玩家没做任何事情时播放,同时可能也会有奔跑和 攻击动画。一个良好的图层顺序是空闲动画位于图层0,奔跑动画位于图层5,攻击动画位于图层 lO,这样一来玩家如果进行攻击,攻击动画的优先级就会比奔跑动画高,同时也会阻止空闲动画的 播放企图。 要设置图层顺序,需要在动画脚本开始出初始化这段动画,方法如下: annimation[“此处为要设置的动画名称”1.1ayer=10; 一般情况下。一个良好的图层次序会将空闲动画置为O,将弹跳动画置为5,攻击动画置为lO, 这样如果玩家进行攻击,攻击动画的优先级会比基本的奔跑动画高,它会覆盖对弹跳和空闲动画的 任何播放企图。 3.2 APK文件发布 在Unity3D中完成游戏设计后。需要导出 APK格式完成触屏类手机游戏的发布。本文以An— droid手机为例进行说明。具体如下: 首先配置JDK和SDK环境。将下载好的JDK文件安装在C:Wrogram FileskJava路径下。安装完 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务