基于unity3d的跨平台格斗游戏设计毕业论文(编辑修改稿)内容摘要:

进行动画的自制,将 animation 动画挂在 Gameobject 上第 6 页 可实现 Gameobject 的位移、放大缩小、渐变或其他更高级的 效果。 24 animation 制作工具 游戏中的各种图标 Texture 文件需要制作成 Atlas 图集的形式, Unity3D 提供 atlas maker工具,将想要的图标素材导入到 Unity3D 中,然后利用 atlas maker 工具将素材更新 到所需要的图集里。 25 atlas maker 界面 6. Camera(镜头 ) 正如电影导演 手中的摄像机将故事呈现给观众一样, Unity3D 中的 Camera 用于将游戏画面呈现给玩家 ,即 Game 窗口中的内容。 一个视图中至少应该放置一个镜头,否则呈现出来的画面只会是一片漆黑。 镜头的放置位置也决定了游戏体验,镜头应尽量放置在能看清整个场景的位置,距离适中,太近的镜头视距太短 看不到远方的路障 ,太远 的镜头 看不清前方的物体, 影响游戏体验。 Unity3D 中新建的工程 都有 提供 一个 main camera 镜头。 另外,可以给镜头添加一些 功能,如 animation 动画,在镜头上添加具有短位移的 animation第 7 页 动画可以使 其抖动。 (二 ) NGUI NGUI 为 Unity3D 的一款界面 UI 设计插件,使用 NGUI 可以轻松完成大部分 2D 界面设计 , 下面是 NGUI 的一些基础控件及关键点: 1. Sprite(图片 ):如果要将一张图片放在界面中, 需要选中 一个 Gameobject,然后 添加 UIsprite脚本(或直接使用 NGUI 创建一个 sprite 控件) ,该对象的 inspector 窗口中即出现 sprite控件 栏。 如 图 12 所示 , 点击 Atlas 选择图集,后面为选择图集的具体图片。 26 UISprite 脚本 界面 2. Label(文本框 ):使用 UIlabel 脚本在界面中添加 文字,文字颜色、大小、位置均可自己控制 ,如 图 27 所示: 27 UILabel 脚本 界面 3. Button(按钮 ):其实 Button 控件是由 sprite、 label 和 collider 碰撞器 组合而成的, 应该包含一个父 Gameobject,和三个子 Gameobject。 Collider 为碰撞器 , 用于响应外界对此块区域的操作。 当点击此块区域时,将执行某些处理, 可 由脚本控制。 这三个也可全部放在一个 Gameobject 中,但是,这样做的缺点就是他们共用一个 tranform,复用性不强。 第 8 页 4. Tween(动画 ): 即动画效果, 包含颜色变化、大小变化、旋转变化、深浅 变化等, 类似animation 动画,差别在于 tween 为写死的动画,没法像 animation 动画那样自由调节。 可挂在任何对象上, 并且需要选择如何触发此动画。 如点击一下 Button 触发 顶部按钮由透明变成正常颜色,这样就实现了简单的 Tween 动画功能。 5. Depth(深度 ):界面为 2D 界面,没法避免 窗口 、图片 重叠 的 现象, depth 可以有效的将各个 Gameobject 分层处理。 Depth 值越低代表此物体越底层,将被 depth 值比他高的Gameobject 遮 挡住。 6. NGUI 还提供一些例如滑动条、输入框 、下拉栏等更高级的控件, 在本文不涉及到,在这里不做阐述。 第 9 页 三、 游戏需求分析 (一 ) 游戏基本介绍 本毕设为一款 使用 Unity3D引擎制作实现的 3D格斗 游戏, 脚本使用 C编程语言编写,主角为大家耳熟能详的钢铁侠, 游戏整体风格偏机甲类, 主要玩法即 格斗。 31 战斗界面 战斗界面 如图 31 所示 , 玩家通过控制界面左侧的方向键 (已隐藏) 进行主角前后左右的移动,通过点击右边的攻击键实施攻击。 游戏将给玩家带来超炫的格斗动作,逼真的打击感, 通过较为真实的打击感,让玩家在游戏中感受快 乐。 (二 ) 需求分析 设计游戏之前需要对游戏进行全面的需求分析 [4], 明确设计方向, 然后 写游戏的设计说明书 , 界面 设计 及一些功能性的东西可以参考市面上比较热门的游戏 的做法 , 游戏将依据此份说明书进行设计。 说明书 应该包含 游戏各个界面的介绍、每个按钮功能、以及游戏中每一步操作对应的响应 方式。 需求分析完需要构建游 戏的系统框架,使 用导图的方式将游戏的各个系统、模块一目了然的呈现出来。 如 图 32 所示,利用 MVC 框架将游戏的各个系统界面联系起来。 第 10 页 32 游戏系统框架 (三 ) 场景模型 的搭建 一个可用的场景模型 包含两个方面的属性, 一方面是模型,另一方面 是阻挡。 单纯从可用性来说模型一点用处都没有,但是为了 让玩家知道哪边可以踩、 哪边是墙壁 、哪边会产生碰撞 ,就必须设置模型。 阻挡用于限制玩家的活动区域,也就是配合模型来使用的。 可以说 ,没有阻挡的模型是不可用的,没有模型的阻挡是不具生命力的,两者密不可分。 第 11 页 33 一个模型所包含的内容 如图 33 所示, inspector 窗口中 Cube( Mesh Filter) 为模型组件, Box Collider 为阻挡碰撞器, Center 为此碰撞器的坐标位置, Size 为碰撞器尺寸。 Mesh Renderer 是材质组件,用于帮模型添加材质、贴图。 34 较为成形的场景模型 1. 模型 众所周知,点成线,线成面,面成体。 模型由面组合而成,模型的制作可通过 3DSMAX等建模软件实现,面数越多的模型越精致,但是对系统性能的要求也越高。 游戏画面是由计算机 CUP 和 GPU 实时处理演算出来的图像,面数越多对 GPU 的压力越大,易导致游戏画面卡,运行不流畅等情况,所以尽量选择低面数模型、优化所用模型材质能够大幅提高游戏性能。 Unity3D 提供一些简单的 3D 模型供玩家使用,如正方体、球体、圆柱体 等多种模型,实际上,他们是属于添加 了模型组件的 Gameobject, 这些模型可用于当做战斗场景,可以通过调节这些模型的长宽高来匹配场景人物模型 的大小。 2. 阻挡 Unity3D 自带一些简单形状的阻挡,如 box collider、 mesh collider 碰撞器。 阻挡碰撞器只是个组件,想运用它 必须放在 Gameobject 中实现,因为这些都是体阻挡,如果想要面阻挡, 需把该阻挡对应的 Gameobject 中 tranform 的 S 坐标其中一个值改成 0 就行了。 设置场景的各个方向阻挡,需要特别注意的是,给主角和 NPC 站立的那一面 阻挡需要将阻挡 对应第 12 页 Gameobject 属性改成“ ground”,否则角色无法站在阻挡上。 设置四周阻挡,防止主角掉出场景外,四周阻挡必须足够高,超过角色所能跳跃的高度,防止主角跳出 阻挡。 ( 1) 碰撞检测 游戏过程中经常会出现主角被墙壁所阻断,撞到 NPC 将其推开等情况,这些都是属于碰撞检测, Unity3D 提供例如 box collider(长方体)、 mesh collider(圆柱体)等碰撞检测器 [5],当检测到碰撞器时,调用 OnControllerColliderHit() 控制碰撞器碰撞函数 ,防止游戏过程中人物相互穿越、穿墙等情况的发生,有利于提高 游戏的真实性。 想要添加更多复杂的碰撞检测器,可通过 3DSMAX 等建模软件制作完成再添加到 Unity3D 中来。 (四 ) 人物 动作 说明 因 为动 作与模型的高度长短相关联,所以动作一般都是和模型绑定在一起,两个模型骨骼(高度、肢体长度)大体一样, 可进行动作的复用, 人物动作可以用 maya 等动作 处理 软件实现, 动作 应包含最基本的走路、攻击、跳跃等基本动作。 本毕设所用模型 、 动作均来源于网络 ,且模型高度、骨架一样,动作复用同一套,节约开发成本 , 缩短开发周期。 35 动作文件 脚本内容 1. 模型 动作 的 导入 第 13 页 将已制作好的模型动作 文件 导入 到 Unity3D 引擎中,导入格式为 FBX,并将模型所对应的贴图材质一起 导入到 Unity3D 中。 值得注意的是,无论之前在 3DSMAX 软件中的模型有没有材质,导入到 Unity3D 后,模型都是没有材质的。 Unity3D 配备了强大的编写材质和阴影的工具( ShaderLab) , 导入模型后,需要 手动在 Unity 里面重新设置一遍材质贴图。 2. 动作处理 导入到 Unity3D 中的 FBX 动作文件 其实就是带 序列帧的动画文件,它包含动作的所有动画,并标注出每一个动作的 帧数 范围。 但是这些动画 没法。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。