基于Unity3D的塔防游戏关键技术的研究与实现
作者:王瑾
来源:《科教导刊·电子版》2014年第31期
作者:王瑾
来源:《科教导刊·电子版》2014年第31期
摘 要 Unity3D引擎是目前最具代表性的3D游戏制作平台,本文介绍基于Unity3D设计一款拥有良好操作性及娱乐性的小型塔防游戏,研究触屏类智能手机游戏设计与交互性方面的关键技术,构建塔防游戏的基本对战功能、地形系统、 场景关卡、进度存储、音效设置等典型功能,展示游戏界面和动画效果精彩,为其他游戏开发提供参考。
关键词 Unity3D引擎 塔防游戏 手机触屏
中图分类号:TP11.52 文献标识码:A
1 引言
塔防游戏是一款经典的益智类游戏,经典模式之一为堵怪模式,一张作战地图,让怪兽按照你设定的路线来回移动,让玩家炮塔按照设定的位置进行创建,并通过使用特效技能,以便于炮塔不断地轰击敌人,从而获得游戏的胜利。
我们观察到近年来各手机平台上如《植物大战僵尸》、《保卫萝卜》等塔防游戏的流行已充分说明很好的娱乐性,同时随着移动设备硬件性能的不断提升,拥有更为美妙的视觉体验的3D类手机游戏也获得了一定比例的市场, 3D效果塔防游戏产品也逐步上线或提上了开发进程。本文将介绍基于Unity3D设计和制作《保卫羊村》的塔防游戏过程中的关键技术点,给今后的相关游戏开发者一些参考。
2 Unity3D简介
Unity3D是一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型的互动内容的多平台的综合型游戏开发工具,具体的特性包含整合的编辑器、跨平台发布、地形编辑、着器、脚本、网络、物理、版本控制等特性,集成了强大的PhysX物理引擎,支持JS、C#等脚本语言,内置了大量的常用Shader效果供开发者使用,支持发布游戏至PC、iOS、安卓等多种平台,也能利用Unity网页插件发布为网页游戏。和其他游戏引擎的一大差别在于,它更加注重设计者对游戏可玩性的关注,而不是单纯追求设计的简易度,有免费的社区版和价格较为便宜的专业版,吸引了广大的游戏开发者学习和进行各类游戏的创作。
3 《保卫羊村》游戏的制作概要
作为一款塔防类游戏,基本策划思路包括进攻方的灰太狼系列敌人、防守方的羊村武士系列等,敌人从地图右方按设计规则自动向左方的羊村慢慢移动,对基地进行攻击,防守方根据需求,动态设置武士的创建位置进行防守,杀死每个敌人均可获得金币,金币用于建造更多的武士投入防守,敌人攻入羊村大门即关卡失败。
按Unity3D游戏项目的制作流程,即模型制作→创建工程→模型构建→场景构建→程序编写→测试发布,先在3ds Max建模软件中进行游戏基本模型的设计制作,如防守方的羊村武士、进攻方的灰太狼、武器道具等导出为FXB格式文件,用PS软件设计贴图文件,导出为PNG格式。
新建Unity工程SheepWar,在Asserts文件夹导入FXB和PNG等模型资源,并陆续创建Material、Model、Prefab、Scenes、Scripts等文件夹进行分类管理。设计典型多个游戏场景和分关卡,在游戏管理器的脚本中进行管理和链接。
游戏中具体关键技术如游戏地形构建、核心脚本程序的开发控制详见“4 《保卫羊村》游戏的关键技术和实现”。
完成游戏制作和调试后,发布为游戏作品,进入发布设置,选择添加游戏场景,在前面的场景会先显示,选择Loading作为0(默认加载项)。在平台设置里面选择iOS/安卓等多种平台进行相关属性的设置,完成发布,编译发布为游戏安装包,安装到手机设备中进行测试和试玩,如果是作为一款成熟的游戏,可选择发布作品到AppStore,GooglePlay等分发平台供大家下载。
4 《保卫羊村》游戏的关键技术和实现
4.1构建地形,设置摄像机、天空盒子
在菜单中选择地形Create Terrian,创建平面的地形对象,使用地形编辑工具进行绘制和美化,利用地形编辑器中的7个关键功能设置高低的拉高降低用于构建山壑,使用平滑工具去除明显的棱角,通过贴图工具为地形刷上漂亮的贴图,如土黄、绿等,使用植树工具放置一些高低密度不同的树模型植物,最后通过细节工具为地形放置一些细节元素如花草植被,这些植物默认有风的影响效果,放大以观察到栩栩如生的左右晃动效果。
场景中默认有一个主摄像机,选择该对象,设置属性Projection为垂直观察角度Orthogr
aphic,并调整位置和X轴旋转为合适角度,在预览窗中观察到游戏运行的镜头内容。
选择编辑/Render Setting菜单,在属性面板中设置Skybox Material为Sunny1 Skybox,让场景上空显示出3D蓝天白云效果。
4.2 矩阵地图
新建游戏Plane平面对象GridMap,设置长宽大小后,在指定脚本文件中定义二维数组,并初始化地图单元的序列数组,并初始化为地图平面矩阵。
4.3 游戏管理器
创建一个空的游戏体作为游戏管理器,指定新建脚本组件,配置Audio组件,该管理器需要设计成为唯一静态实例,确保整个游戏运行过程中只有一个实例,主要负责游戏的核心逻辑控制,包括游戏状态、玩家得分、攻防双方的对象、背景音乐、界面数据的更新、关卡切换的判断等。
4.4 敌人生成器
新建敌人生成器游戏对象,在脚本文件中按各关卡预设的时间和位置动态克隆生成进攻方模型对象Prefabs,各生成对象按自己的运动行为进行移动并攻击防守方单位,设计XML数据格式的预定义生成策略来模拟一些预设行为,程序读取文件中的定义,按等待时间和指定的路线编号生成不同的进攻方对象。
4.5 碰撞检测
碰撞检测在3D游戏中是非常重要的,优良的碰撞检测要求人物在场景中能平滑移动,如果是击打类型的碰撞如武器系统击中等场景,将触发相关物体的受损行为乃至死亡销毁,在塔防类游戏中,正常情况下都是第三人称视图,Unity3D中模型需要设置碰撞器组件以侦测和触发刚体之间的碰撞,如果发生碰撞将触发事件函数OnCollisionEnter,设置勾选Is Trigger选项的碰撞将触发OnTriggerEnter,需要在触发函数中加入逻辑代码实现物体碰撞后的行为效果。
4.6 音乐音效
Unity3D游戏场景中音频大致分两种,一种为游戏音乐,如循环播放的较长背景音乐,
建议采用mp3格式,以节省游戏运行内存;另一种是游戏音效,如较短的爆炸音等,建议采用wav格式,取得较好的音效。
选择游戏管理器对象,创建音源对象Component/Audio/AudioSource,设置m_audio属性为背景音乐bk.mp3进行关联,在Update方法中判断并播放背景音乐,在脚本中使用play()进行完整播放;在武器例如炮弹对象中创建关联的音效对象,在发生碰撞的方法中加入playOneShot() 播放一次音效。
4.7 存储游戏数据
Unity3D提供两种存储游戏数据的方式,其中较为方便而且简单的方式是通过游戏xml文件修改PlayerPrefs类直接进行本地持久化保存与读取,它的工作原理是以键值对的形式将数据保存在文件中,就好比给需要的每一个数据取个名字,成功保存本地文档后,再通过这些名字取出上次保存的数据。
如果是复杂的游戏中的大量运算数据就需要使用FileInfo的方式进行更为复杂的文件读写操作。
4.8 运行效果
在Unity3D中完成游戏设计并调试成功后,发布为手机平台的安装格式,游戏文件安装到手机中,在触屏类智能手机中运行游戏的界面效果如图1所示。
图1:游戏运行界面效果
5 结语
本文简要概述了基于Unity3D初步完成一款保卫羊村的塔防游戏,介绍了关键部分常用的一些实现方法,使用到了包括场景、关卡、地图、武士、敌人等核心对象的实现,对接下来更为复杂的手机游戏软件的开发有所帮助。熟练掌握Unity3D技术是做好游戏创作工作的关键,只有充分了解其功能及优缺点,才能根据实际需要选择恰当的方法,该游戏在故事情节设计方面还比较简单,需要在细节设计上做进一步地研究和完善。
参考文献
[1] 宣雨松.Unity3D游戏开发[M].人民邮电出版社,2012.
[2] 金玺曾.Unity3D手机游戏开发[M].清华大学出版社,2013.
[3] 胡昭明,吴燦.游戏设计概论[M].清华大学出版社,2011.
[4] 瞿颖健,曹茂鹏.3ds Max2012完全自学教程[M].人民邮电出版社,2012.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论