77范文网 - 专业文章范例文档资料分享平台

Unity3D塔防游戏论文(2)

来源:网络收集 时间:2020-10-28 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

第2章 3D游戏的技术知识 模块中使用凸体算法和射线检测算法得到精确的碰撞信息。

2.3 Unity3D

2.3.1 Unity3D简介

Unity3D是由Unity Technologies开发的一款全面整合的专业游戏引擎,其具有的功能使得开发人员可专注于游戏的设计而忽略底层的技术实现,达到快速开发的目的。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件其编辑器运行在Windows 和Mac OS X下。其主要的特色有:

图形动力:内部封装了DirectX和OpenGL图形渲染库,并附带一些常用的渲染组件及着色器脚本。

物理仿真:Unity3d不但整合了Nvidia PhysX物理引擎,并在其基础上封装了游戏中常会用到的物理组件,如碰撞体、连接体等。

跨平台性:可发布游戏至Windows、Mac、iOS、Android、Xbox、Wii或PS3平台,也可以利用Unity web player或者Flash插件发布网页游戏,支持Mac和Windows的网页浏览。

资源商城:开发人员可在资源商城中购买其他人开发的资源(代码、模型等),进行高效复用。

资源服务器:Unity资源服务器是一个附加的版本控制的产品,但比起SVN更适合游戏团队中不同职位的人员共同使用(程序、策划、美术)。

性能分析器:引擎中自带一个Profiler分析器,开发人员可在编辑器或者设备连线进行性能分析CPU和GPU不同阶段的效率。

2.3.2 Unity3D基本概念

一个完整的Unity3d程序是由若干个场景(Scene)组合起来的,每个场景中又包含有许多游戏对象(GameObject),每个对象可以具有若干组件(Component),其中的继承自MonoBehavior的脚本组件进行初始化、更新等操作,而我们在场景所看到的内容是由摄像头(Camera)来呈现并控制的。

场景(Scene):场景是Unity3D程序的基本组成单位,任何一个Unity3D程序都是由若干场景组合而成,程序通过脚本在这些场景之间跳转。场景通过场景图的形式组织,场景图实际上是一种树形结构,其中每个节点就是一个游戏对象。对象与对象之间存在父子关系,即当父级对象移动、旋转、缩放时,子级对象也跟着一起变换,如图2-4所示。

5

第2章 3D游戏的技术知识

图2-4 旋转一个父节点同时它的子节点也跟着旋转

 

游戏对象(GameObject):在场景中按照场景图形式组织,场景图实际上是一种树形结构,树形层次结构中的节点,加入的特定组件后就成了有实际功能的对象,如可渲染网格、摄像机、光源等,游戏对象可以打包成.prefab格式的文件方便复用。

组件(Component):组件可以是网格(Mesh)、光源(Light)、摄像机(Camera)、粒子系统(Particle)、物理碰撞体(Collider)、布料(Cloth)、连接体(Joint)、声音(Audio)、动画(Animation)以及最重要的脚本(Script)。Unity3D的设计是以面向对象理论为基础,Unity3D支持C#、JavaScript和Boo三种脚本语言,如果对象继承自MonoBehavior脚本对象,生命周期将交给Unity3D来管理,如图2-5所示。

 

 

图2-5 MonoBehavior的生命周期

6

第3章 游戏设计

第3章 游戏设计

3.1 游戏创意

随着移动硬件设备的日益强大,并且移动平台技术在这几年得到迅猛发展,移动平台上的游戏也出现了惊人的增长,轻量级、微创新、时间碎片化一直是移动游戏的发展趋势。

笔者按照这些思路产生了制作一款新的3D塔防游戏的想法,游戏同样遵从以上三个特点,下面是简单的游戏策划:

游戏名称:《五岳乾坤》 游戏类型:3D塔防益智类游戏 游戏平台:PC、Android 游戏模式:过关模式

游戏玩法:玩家有初始经济10,可以在开始建立两个防御塔,怪物进入路线后,一旦进入防御塔的攻击范围,会被防御塔攻击,直到怪物血量减少到0,每死亡一个怪物,经济会加2,这样,可以继续建造防御塔。每一波结束后,下一波怪物会比上一波怪物的血量更多,这就需要建造更多防御塔。

游戏操作:鼠标前后拖动来查看地图各个地点,点击防御塔建造按钮然后点击空地可以建造防御塔。

3.2 游戏框架结构设计

如前文所述,一个游戏包含多个场景,玩家根据当前的游戏进度和选项进入不同场景。而游戏模块为游戏提供了一些必须用到的功能,这些功能,都是完全独立与所有的场景存在的,它们并不知道到底有多少关卡,关卡的内容是什么,它们的主要工作,就是与游戏的控制单元进行信息的交换,从而支持游戏的进行。

塔防游戏没有复杂的游戏系统,更加侧重于游戏可玩性的设计,并且由于使用Unity3D引擎,省去了许多底层模块的设计,其中核心的模块为:图形渲染、物理仿真。

3.3 游戏层次结构设计

前文提到Unity3D中每个场景按照树形层次结构组织游戏对象,并且每个游戏对象可以拥有若干组件。所以整个游戏系统的实现必须遵守这种规范,在这种规范下为了符合软件设计的高内聚、低耦合的原则,使用MVC模型设计了一套游戏的层次结构,这样的好处是使游戏的结构清晰简单,三层之间互相隔离、互不影响,日后功能的扩展方便。 如图3-1所示。

 

7

第3章 游戏设计 cmp sequence 视图层Hierarchy:MainCameraGameObject2GameObject3……控制层Component:UIManagerNetworkManager……?use?逻辑层Component:Component1Component2Component3Component4Component5…… 图3-1 游戏层次结构图

 

游戏系统分为三个层来设计,分别是:

视图层:主要为加入到场景层次结构的游戏对象,这些对象常常是渲染对象或摄像机。

控制层:在主摄像机或者空对象中加入的管理脚本组件,这些脚本主要是针对对应的功能模块的进行控制及与其他功能模块进行通信,如界面管理类、网络联机管理类。

模型层:主要是在渲染对象中加入的逻辑脚本组件,这些脚本对游戏对象进行逻辑处理。

 

 

 

 

8

第4章 游戏实现

第4章 游戏实现

4.1 场景渲染实现

考虑到游戏的需求,整个场景主要包括几类渲染对象,如天空盒、水面、地形、外部导入的3D模型、投影、粒子系统等,如图4-1所示。

图形渲染天空盒水面地形3D模型投影粒子系统 图4-1 游戏场景中的渲染对象

 

下面主要介绍一些重要渲染模块的具体实现。

4.2 地形

塔防游戏的场景通常比较简单,就像一个棋盘格,可以在上面摆放防守单位,专门留给敌人一条通道。在这个实例中,我们使用二维数组来点示场放中的格子, 每个格只有两种状态,允许摆放防守单位或不允许。

在Unity3D中通过高度图来实现地形,高度图实际上是一张矩形的灰度图,在灰度模式中,颜色通过0~255来表示,0代表黑色,255代表白色,像素越亮代表地势越高,255的像素代表此次顶点最高,反之亦然,所以像素灰度值和顶点的高度可以用公式 (1) 表示。其中L为像素的灰度值,yheight、ymin分别为Unity3D中定义的地形高度和地形最低点,求得网格顶点的高度y.

y?L?yheight255?ymin

(1)

程序在需要渲染地形时通过读取这张图片,并按照灰度生成顶点高度不一的矩形网格。这样大大减少了游戏模型体积。

Unity3D中的地形模块不但可以导入高度图,还可以用笔刷为绘制地形纹理、树、草和岩石,所见即所得,大大减少了开发人员的工作量。

在新建了一个Project之后,我习惯于先创建几个文件夹,用来存放做游戏所需要的所有素材,如:Gizmos,Materials,Scene,Script等,其中Gizmos用来存放贴图,Materials用来存放材质,Scene用来存放场景,Script用来存放脚本。

9

 

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Unity3D塔防游戏论文(2)在线全文阅读。

Unity3D塔防游戏论文(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/581223.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: