当前位置:首页 >> 机械/仪表 >>

基于Unity3D的FPS游戏设计与开发


2012 年 第 29 卷

4月 第2期













JOURNAL OF SANMING UNIVERSITY

Apr. 2012 Vol.29 No.2

r />基于 Unity3D 的 FPS 游戏设计与开发
伍传敏,张帅,邱锦明
( 三 明 学 院 数 学 与 信 息 工 程 学 院 , 福 建 三 明 365004 )

摘 要 :系 统 介 绍 基 于 Unity3D 的 FPS (第 一 人 称 射 击 )游 戏 的 关 键 技 术 与 实 现 方 法 ,建 立 逼 真 的 三 维 实 体 模 型 ,利 用 大 规 模 复 杂 场 景 的 高 效 建 模 和 实 时 绘 制 技 术 开 发 三 维 场 景 游 戏 ,并 满 足 玩 家 的 沉 浸 交 互 式 体 验 。 提 出 可 行 的 实 时 碰 撞 检 测 策 略 、游 戏 人 工 智 能 (AI )及 特 效 的 实 现 算 法 ,以 可 键 盘 控 制 功 能 的 视 点 方 式 实 现 人 机 对 抗 模 式 。 在 FPS 游 戏 应 用 中 ,该 视 点 方 式 灵 活 易 用 ,可 操 作 性 好 ,提 高 了 玩 家 浏 览 场 景 时 的 灵 活 性 ,大 大 增 强 了 玩 家 浏 览 场 景 的 真 实 感 。 关 键 词 :FPS ;Unity3D ;JavaScript ;游 戏 引 擎 中 图 分 类 号 :TP311.52 文 献 标 识 码 :A 文 章 编 号 :1673-4343(2012)02-0035-06

FPS game design and develop based on the Unity3D
WU Chuan-min , ZHANG Shuai , QIU Jin-ming
( Institute of Mathematics and Information Engineering, Sanming University , Sanming 365004, China )

Abstract : A FPS (first-person shooter )was developed based on Unity3D. The verisimilitude three-dimensional models were established. Use of large-scale complex scene efficient modeling and real-time rendering technology development of 3D games, players can meet the immersive experience. A real time collision detection strategy was proposed. Algorithm of intelligence and special effects are researched. The system realizes the keyboard control function of viewpoint and man-machine confrontation model. In the FPS game, the view mode is flexible and easy to use, good operability, making the players browsing scenes easily, greatly enhancing players' sense of reality. Key words: FPS; Unity3D; Javascript; game engine

FPS 游戏是以玩家的主观视角来进行射击,玩家们不再像别的游戏一样操纵屏幕中的虚拟人物
来 进行游戏,而 是身临其境 地体验游 戏带来的视 觉冲击 ,这就 大 大 增 强 了 游 戏 的 主 动 性 和 真 实 感 。 早期第一人称类游戏所带给玩家的一般都是屏幕光线的刺激,简单快捷的游戏节奏 [1] 。 随着硬件的 逐步完善,以及各种类游戏的不断结合,第一人称射击类游戏提供了更加丰富的剧情以及精美的画 面和生动的音效, 此外还支持玩家自设定游戏场景及自由的视点切换功能。 最具代表的就是 1998 年 Valve 公司推出的半条命(CS )和最近几年腾讯、迅雷等企业推出的网络对战射击类游戏。 本文以玩家完成营救任务为背景,采用当前业界主流的游戏引擎—— Uniti3D 作为开发平台,设 — 计开发了三维仿真射击游戏。 视觉上实现了从海洋、陆地的地形地貌到天空环境的逼真显示。 游戏 模拟敌人、武器、射击、爆炸以及可能出现的意外效果 [2] ,并且重点解决了瞄准镜及炸弹爆炸模拟,使 游戏更加逼真,受测玩家普遍感觉沉浸感强。
收 稿 日 期 :2012-02-12 基 金 项 目 :三 明 学 院 科 学 研 究 发 展 基 金 (B201005/Q, B201003/Q) ,三 明 学 院 海 西 专 项 (HX201007/Z ) 作 者 介 绍 :伍 传 敏 ,男 ,福 建 将 乐 人 ,助 教 。 研 究 方 向 :软 件 工 程 及 项 目 管 理 。

- 36 -

三明学院学报

第 29 卷

1 系统结构
1.1 系统要求
针对 FPS 游戏的特点,为了使玩家能够充分享受游戏带来的喜悦,对该游戏的设计提出了以下要求: (1 )具有良好的实时性,要求帧频大于 60 fps[3] 。 (2 )提供辅助信 息系统,玩家 能够 通 过 快 捷 键 了 解 当 前 的 伤 亡 情 况 ;需 要 提 供 小 地 图 及 玩 家 所 在位置提示。 (3 )提供视角系 统,通过视角 系统 可 以 提 供 玩 家 选 择 第 一 人 称 或 者 第 三 人 称 视 图 进 行 游 戏 ,也 可以在“阵亡”后选择观察队友的活动状态。 (4 )单机使用时,支持添加 AI (人工智能)进入游戏,而且机器人的“智商”不能太低。 (5 )配备逼真的音响效果、视觉切换、长镜头等功能。

1.2 脚本系统
脚本系统 [4] 是三维游戏开发的重要组成部分,是游戏引擎与游戏素材资源之间的纽 带 。 脚本被 编写好后,只 运行于虚拟 机容 器 中 ,执 行 结 果 由 虚 拟机发送给 资源文 件 。 在 游 戏 开 发 中 引 入 脚 本 机制后, 利用 脚本 语 言 编 写 游 戏 的 逻 辑 部 分 和 界面设计部 分,当游戏逻 辑的 部 分 需 要 修 改 , 只 需要重新编 译包含 被 修 改 部 分 游 戏 逻 辑 的 游 戏脚本即可,降低了模块之间的耦合度。 当新的 地图、武器、游 戏任务需要 被更新 ,玩家 只 需 要 下载 更新脚本文 件及 资 源 包 , 实 现 了 游 戏 版 本 的绿色切换。 图 1 为游戏引擎中脚本系统框架。

2 关键技术

图 1 游戏引擎中脚本系统框架

FPS 游戏开发过程中要协调游戏中的各种人工智能元素:敌人、对手、协作信息、空间导航等,需
要编写脚本来实现各种元素的活动规则 。 现介绍具体的玩家射击控制、非玩家控制、瞄准镜 及导弹 爆炸的实现方法 [5-7] 。

2.1 玩家射击控制
对于 FPS 游戏开发而言,实时的三维游戏数据渲染及显示、高清晰的虚拟场景是决定游 戏能否 吸引玩家的关键。 Unity3D 提供的地形系统可以在较低的硬件平台上实现广阔茂盛的植被景观 ,为

FPS 游戏场景设计带来便利。 使用 JavaScript [8] 脚本语言进行游戏开发,如需移动一个对象时使用游
戏组件 Transform 中的 Translate 函数来修改三维空间坐标,通过游戏中惯用的 W 、A 、S 、D 键来控制方 向(图 2 )。 使用 Update 函数实现键盘控制物体移动并通过单击空格键发射子弹。 具体实现过程如下:

function Update () { var controller:CharacterController=GetComponent (CharacterController); transform.Rotate(0,Input.GetAxis("Horizontal")*rotateSpeed,0); var forward=transform.TransformDirection (Vector3.forward); var curSpeed=speed*Input.GetAxis("Vertical"); controller.SimpleMove(forward*curSpeed);

第2期

伍 传 敏 ,等 : 基 于 Unity3D 的 FPS 游 戏 设 计 与 开 发

- 37 -

if(Input.GetButtonDown("Jump"))transform.rotation = Quaternion.identity;) var bullit =Instantiate (bullitPrefab, GameObject.Find ("SpawnPoint"). transform.position,Quaternion. identity); bullit.rigidbody.AddForce(transform.forward*2000); }
此外,还可以对发射进行次数统计以便可以在游戏场景中模拟武器子 弹数量 ;如果 玩家在游戏 场景中按快捷键换弹夹或者在场景中得到道 具,则清空原有的计数器或重新设置计数器的 大小以便进行武器更替。

2.2 非玩家角色控制算法的实现
在实际游戏开发中如何实现 AI 元素 (非 玩家角色,包括敌人及景观等)是非常重要的。 针对游戏需求, 结合面向动作的人工智能,设 计的非玩家角色控制的算法具备主动和被动 控制两种状态。 它们处于被动时,就该考虑是 否被攻击为触发条件以及做出相应的对策。如
图 2 可移动球体发射子弹效果图

果非玩家角色被触发则转向主动状态。 在主动状态时,如果有目标进入一个特定的距离范围 ,非 玩 家角色就进入攻击模式,否则处于防备状态。 非玩家角色控制算法伪码描述如下: (1 )获得玩家和非玩家在游戏场景中的位置(坐标)。 (2 )计算出两者之间的距离 Distance 。 (3 )定义武器的射程 D1 ,最远攻击距离 D2 。

if( 非玩家角色被攻击 ) if(Distance<D1){ <1> 调用攻击策略函数; <2> 根据武器设置子弹发射间隔; <3> 设置子弹的最远攻击距离; <4> 调用射击函数; if(Distance<D2){ <5> 调用碰撞函数。 } Else{ 开火特效模拟失效;} Else { 超出攻击范围;} } 2.3 瞄准镜实现
要在 FPS 游戏中定义瞄准效果,可以用仅仅包含一个十字星的简单的图形用户界面来 做准星 , 需要建立两个变量。 第一个变量是定位将要放置用的图像及使用的材质,第二个变量是个矩形即材 质在屏幕上的位置。 Start() 函数计算将要绘制的材质的位置,在构造器中有 4 个参数确定了矩形的定 位和尺寸。 第一个参数表示矩形的左边界限,第二个参数设置矩形的底 ,第三个和第四个参数确 定 了矩形的宽和高。 在 OnGUI() 函数中可以使用 GUI 类的功能将项目画在屏幕上,在这种情况下调用

DrawTexture() 并且传递它的位置和十字形瞄准线材质(图 3 )。 具体实现代码如下。 function Start(){ position = Rect( ( Screen.width-crosshairTexture.width ) / 2, ( Screen.height -crosshairTexture.height ) /2, crosshairTexture.width, crosshairTexture.height );}

- 38 function OnGUI(){

三明学院学报

第 29 卷

GUI.DrawTexture( position, crosshairTexture );} 2.4 爆炸效果
要实现爆炸效果就必须调用粒子系统来实现真 实感 ,粒 子 系 统 中 的 每 一 个 粒 子 都 具 有 大 小 、颜 色 、 形状、透明度、生命周期、运动速度、运动方向等相关 的属性, 并且其中的很多属性都可以随着时间的推 移,每个粒子都会经历“产生”、“活动”和“消亡”三个 阶段。 弹道和爆炸效果的设计也十分重要 。 如果导弹
图 3 瞄准镜头效果

与另一个刚体发生碰撞,要确定是否有在附近还附着有任意其它的刚体对象。 每个对象内都有爆炸 效果影响,给他们一个向上的力,以使它们对导弹做出反应。 然后在导弹着地的地方沿 Y 轴方向施 加一个爆炸的影响,一旦发生爆炸,被模型预设的粒子效果就马上被调用。 然而,作为距离爆炸效应 是递减的,影 响的半径不 是恒定的 ,在 爆炸中心点 的对象越 靠 近 圆 周 边 界 影 响 也 越 弱 ,定 义 两 个 变 量就很容易调整出一个恰当的效果。 如果一个颗粒的发射器被附加到预制的物 体上那么 就会开始 发射颗粒,等待限定时间后,然后停止喷射 [9-11] (图 4 )。 具体实现代码如下。

function OnCollisionStay(collision:Collision) {yield WaitForSeconds(2.0); Destroy(gameObject);} var explosionPrefab:Transform; function OnCollisionStay(collision:Collision){ Instantiate (explosionPrefab,this.transform. position,this.transform.rotation); Destroy(gameObject);}

3 基于 Unity3D 的 FPS 游戏实现

图 4 射击调用粒子效果的爆炸场景

Unity3D 是一个全面整合的专业游戏引擎,可以建立任意平台的作品 ,也可以基于 webpage 进行
发布。 它支持绝大多数的文件格式;具有易用、灵活的着色器;支持联网;实时的三维图形混音频流 及视频流。 本游戏使用 MAYA 进行场景建模,结合 Unity3D 强大的脚本系统和游 戏引擎 ,建 立了逼 真的模型和场景。

3.1 游戏系统的需求分析
在游戏开发中,需求分析阶段与游戏设计的过程关系密切。 此游戏是以 苏德战争为 背景 ,当德 国百万大军压境苏联内陆,红军特种小分队通过军用直升机空降到敌人的军用机场 ,并且摧毁 敌人 的通讯设备和机场跑道。 根据剧情游 戏设计 3 个关 卡,第一 关 以 军 营 作 为 主 要 场 景 ,任 务 是 消 灭 敌 人 守 军 部 队 ;第 二 关 以机场为主要场景,任务是消灭机场守卫和已升空的敌军战机 ,并炸毁敌军通讯系统。 最 后玩家需 要快速地撤离战场。 游戏设计一 个用户可奔 跑 、行走并 且 操 纵 敌 军 坦 克 ,玩 家 扮 演 突 击 队 长 ,运 用 键 盘 和 鼠 标 来 控 制方向、运动、开火、更换装备等。 通过设定好的关卡和 AI 控制的敌人进行交战,完成剧情设定的任 务则可以获胜。 利用游戏所设计的瞄准镜可以让玩家快速地锁定目标并进行射击。

3.2 场景创建
三维虚拟游戏中,模型建立是基础又重要的部分 ,模型的逼真度和实时 渲染效果关 系到玩家对

第2期

伍 传 敏 ,等 : 基 于 Unity3D 的 FPS 游 戏 设 计 与 开 发

- 39 -

游 戏 的 真 实 感 。 需 下 载 FPS_Tutorial 工 程 文 件 并 将 其 解 压 至 Unity3D 。 在 项 目 面 板 上 , 从 Objects/

mainLevelMesh 中选择 mainLevelMesh ,将其拖拽到场景中。 运用多边形建模、矢量建模和地形生成等
技术, 在满足实时仿真要求的前提下 , 高效地创建大面积虚拟场景模型数据库 。 利用 多层次细节 (LOD )、 自由度控制 (DOF )、 光点系统等高级实时功能, 实现逻辑筛选、 纹理动画序列、 公告牌 (billboard )渲染等多种高级渲染效果。 由于游戏场景需要进行实时切换, 为了保证游戏运行过程中 画面流畅 就必须实现 模型简化和 场景优化。 在建模过程中采用的是均值聚类收敛准则,通过将每个顶点之间的距离作为顶点间的相 似度量,将所有与之相似度误差在可以容忍范围内的点都用顶点来取代。 通过这样的处理模型的存 储关键点将减少 40% 以上。 此外,游戏场景远距离景观还需要进行预处理。 根据 LOD 原则,将摄像机和场景的距离一般定义为 两 个 关 键 距 离 (D1 ,D2 ),当 实 际 距 离 小 于 D1 时 ,调 用 的 是 高 清 模 型 ;距 离 介 于 D1 和 D2 之 间 ,调 用 标 准模型;距离大于 D2 则调用远距离模糊模型。 经过 这样处理,每个场景的模型规模不至于过大,对游戏 场景的实时效果起到了优化作用。 如图 5 所示是游 戏设计场景的基础模型。

3.3 纹理映射技术

图 5 游戏场景基础模型

为了使建立 的 3D 模型更接 近现实世界 中的物体 ,简 单的颜色变 换 已 无 能 为 力 ,纹 理 映 射 技 术 就成为了三维游戏的重要组成部分。 合理地使用纹理映射技术可以简化模型、降低系统复杂度 [12] 。 本游戏开发过程中,使用了纹理重复的方法来实现对类似场景的重复建模;利用 MipMapping 及

Caching 技术 [13]可以大大减少多边形的数目,降低了三维场景的复杂度并提升渲染效率。 例如使用纹
理来替代河流、山川等静态对象,提高 了逼真度。 图 6 所示是利用 纹理映射 技术实现的 UV 展开贴 图,图 7 是房屋模型贴图。

图 6 房 屋 UV 展 开 贴 图

图 7 房屋模型贴图

3.4 特殊效果
特效及音响效果的对游戏的辅助效果可以大大地增强射击游戏的真实感和沉浸效果。本游戏在 射击、死亡、奔跑、喘息及环境的风、雨、雪、雷电都设置了特殊效果。 为了增强射击游戏的协作趣味, 在游戏设计中还增加了玩家录音生成提示的功能。

3.5 应用实例
该游戏以第一人称的视角通过机枪、导弹等武器完成使命。 在该游戏中充分考虑了 FPS 的各种

- 40 -

三明学院学报

第 29 卷

人工智能元素,使用了模糊状态机原理和脚本系统。 经过测试,玩家普遍能够通过该款游戏得到 身 临其境的感觉,场景效果及战争特效比较真实。 图 8 所示为玩家驾驶坦克以第一人称的视角进行攻 击的场景,左 下角显示的 是生命值 ,右 下角显示弹 夹数量,右 上 角 还 显 示 了 当 前 的 地 图 信 息 和 敌 我 双方的力量对比。 图 9 所示是徒步穿越河流的情景。

图 8 驾驶坦克攻击

图 9 徒步穿越河流

4 结语
在对 FPS 核心思想的研究基础上, 通过 MAYA 建模, 结合 JavaScript 脚本语言在 Unity3D 开发 环境下实现了该款射击游戏。 总结出了场景创建、瞄准镜设计及爆炸效果的实现方法。 游戏的故事 情节还较简单,还需要在游戏剧本设计上做进一步的研究。 参考文献:
[1 ] KAO YUNGWEI , PENG PINYIN , HSIEH SHEAU LING. A clientframework for massively multi player online

games on mobile devices [C ]//International Conference on Convergence Information T echnology (ICCIT ). 2007 : 48-53.
[2 ] XU CHONGWEI. A software framework for online mobile games [C ]// International Conference on Computer

Science and Soft-ware Engineering (CSSE ).2008 :558-561.
[3 ] YU YANG , LI ZHU , LARRY SHI. Cross-layer optimization for state update in mobile gaming [J ]. IEEE Transac-

tions on Multi-media ,2008 ,10 (5 ):701-710.
[4 ] 王 飚 . 中 国 手 机 游 戏 市 场 发 展 状 况 及 预 测 [J ]. 出 版 参 考 ,2004 (6 ): 8-9. [5 ] 朱 全 银 , 张 帅 , 孙 文 杰 . 基 于 J2ME 及 J2EE 的 移 动 网 络 游 戏 关 键 技 术 研 究 [J ]. 计 算 机 工 程 与 设 计 ,2008 ,29 (20 ):

5 218-5 221.
[6 ] 龚 跃 , 张 真 真 , 黄 小 珂 . 一 种 基 于 动 态 双 向 优 先 级 的 任 务 分 配 与 调 度 算 法 [ J ] . 计 算 机 应 用 , 2009 , 29 ( 4 ) :

1 131-1 134.
[7 ] 刘 治 , 章 云 . 基 于 模 糊 参 考 模 型 机 制 的 网 络 自 适 应 拥 塞 控 制 [J ]. 计 算 机 工 程 , 2008 , 34 (7 ): 89-91. [8 ] 肖郑进, 何钦铭, 陈 奇 . 模糊环境中工作流任务分配的多级模型[J ]. 计算机研究与发展, 2007 , 44 (2 ): 302-309. [9 ] 俞 俊 , 陈 岭 , 陈 根 才 . 一 种 用 于 数 据 分 布 管 理 的 模 糊 分 组 方 法 [J ]. 计 算 机 学 报 , 2005 , 28 (7 ): 1 104-1 109. [10 ] 兰 舟 , 孙 世 新 . 基 于 动 态 关 键 任 务 的 多 处 理 器 任 务 分 配 算 法 [J ]. 计 算 机 学 报 , 2007 , 30 (3 ): 454-462. [11 ] 梁 庆 卫 , 宋 保 维 , 毛 绍 勇 . 系 统 可 靠 性 模 糊 分 配 的 熵 权 方 法 [J ]. 火 力 与 指 挥 控 制 , 2005 , 11 (7 ): 73-76. [12 ] 张 帅 , 伍 传 敏 . 高 性 能 空 间 分 析 综 述 [J ]. 三 明 学 院 学 报 , 2011 , 28 (6 ): 24-30. [13 ] 伍 传 敏 , 孟 金 涛 . 两 类 整 数 分 解 算 法 的 分 析 与 改 进 [J ]. 计 算 机 工 程 与 设 计 , 2007 , 38 (17 ): 1 184-1 188.


相关文章:
开题报告-基于Unity3D引擎的“风之幻想”角色扮演游戏...
本科生毕业设计(论文)开题报告 毕业设计题目:基于 Unity3D 引擎的“风之幻想”角色 扮演游戏设计与开发 学 院: 信息科学与工程学院 专业班级: 计算机科学与技术 ...
unity3d游戏课程设计报告
要求使用 Unity3D 游戏开发软件实现上述游戏 Demo。 三、 具体要求 1、 2、 ...四、 设计主题 基于视频教程“平衡球”的基础,构建了一个益智游戏风格的游 戏...
游戏开发开题报告_图文
游戏开发开题报告_计算机软件及应用_IT/计算机_专业资料。云南大学旅游文化学院 毕业设计(论文)开题报告 课题名称: 院 (系):专学业: 号: 基于 Unity3D 的射击类...
一款基于Unity3D的移动平台游戏的设计
一款基于Unity3D的移动平台游戏的设计_信息与通信_工程科技_专业资料。龙源期刊网...随着 Android 移动操作系统的迅速普及,针对 Android 平台游戏的移植开发需求日 益...
基于Unity3d的潜行游戏开发_图文
2011 届湖北汽车工业学院毕业设计(论文) 毕业设计论文课题名称基于 Unity3d 的潜行游戏开发 系专班学姓 部业级号名 计算机工程系 计算机科学与技术 T1123-2 ...
Unity3D射击游戏策划书
Unity3D 射击游戏策划书张乐梅 杨大凯 纪鹏 武雪皎 张洋瑞 一、 开发人员及分工: 全部人员探讨游戏的详细设计, 杨大凯纪鹏设计所需主代码, 张乐梅武雪皎...
用Unity3D制作一个射击游戏_图文
无限生成怪物 胡文尧:射击制作,游戏界面制作,整合 霍姚远:手榴弹制作,细节完善,后期处理 项目内容: 用 Unity3D 制作一个射击游戏 结果: 实现了场景间的跳转,实现...
unity3d开发过哪些游戏_图文
坐标 科技于 2010 年 11 月公司创立之初开始设计...基于 Unity3D 游戏引擎,该作在 武术特效上做了相当...Unity3D 游戏作品大盘点 FPS 新作《星际陆战队》 ...
Unity3D技术之游戏框架设计
Unity3D 游戏框架设计——基本框架设计框架,从字面理解就是基本结构的意思,我们...基于cocos2d-x引擎的游戏... 4页 免费 基于Unity3D的FPS游戏设... 暂无评价...
unity3D游戏设计期末报告
unity3D游戏设计期末报告_工学_高等教育_教育专区。3D 游戏系统架构设计(Unity ...Unity3D游戏开发与设计-... 暂无评价 12页 免费 基于Unity3D的手机游戏设.....
更多相关标签:
unity3d fps | unity3d fps 游戏源码 | unity3d fps游戏 | unity3d 显示fps | unity3d fps教程 | unity3dfps | unity3d fps低优化 | unity3d fps插件 |