赞
踩
博主主页:电子科技大神
博主简介:专注电子技术领域和Unity3D毕业设计项目实战,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。
主要内容:毕业设计(单片机项目,plc,仿真,Unity3D等)、简历模板、学习资料、技术咨询。
本课题使用Unity3D引擎设计了一款生存类题材的游戏。本人的主要工作有以下几个方面。首选,分析了热门流行的生存类题材游戏的内容和玩法,设计了一款生存类游戏的需求。然后在需求分析的基础上,使用Unity3D引擎实现了游戏场景的搭建、导入游戏对象,设置游戏对象的动画和实现挂载游戏对象的脚本。最终实现了需求确定的功能,并完成了游戏的测试。
关键词: Unity3D 生存类游戏 游戏交互
本课题制作的游戏发生在一个森林中,玩家流落到了一个森林中,森林里有各种未知的风险、有野兽、有怪物,玩家需要面对各种挑战从而生存下来。
在游戏场景中,玩家在森林中行走,森林中设置有一些障碍物和机关,如果玩家无意中接触,会促使玩家的血量降低。森林中有一些有用的物品,可以给玩家拾取使用。森林中会出现野兽或者怪物,当野兽或者怪物在一定范围内看到玩家,会引发对玩家的攻击。
在游戏中,玩家能够通过按下WSAD行走、按shift键奔跑、空格键跳跃,遇到威胁可以逃跑也可以能够发动攻击保护自己。
游戏中,玩家能够在森林中捡拾物品,捡拾物品可以放在游戏背包中,供以后使用。点击游戏界面的背包图标按钮,显示背包系统展示窗口,任意点击窗口中展示的物品,显示物品详情,在物品详情窗口中,点击使用按钮,可以使用该物品。
在设计了一款生存类题材游戏需求上,根据需求分析,首选按照游戏需求划分功能。在Unity3D编辑器中进行游戏场景的建模设置,在游戏场景中引入各种游戏对象,例如角色对象、怪物对象等,对游戏对象挂载相应的功能代码脚本。当每一项功能实现好之后,进行游戏功能测试,看看游戏运行的效果是否正常运行,是否达到设计的要求。
为了使游戏程序架构适应游戏策划需求不断变化,需要设计一个游戏代码易于扩展和可维护性强的架构。对游戏代码的功能进行模块划分,降低了代码之间的耦合度。
根据游戏策划需求分析,把本课题的游戏模块划分为角色控制模块、摄像机模块、怪物AI模块、背包模块、游戏控制模块。
图3-1 模块划分图
游戏控制模块是控制整个游戏运行的。游戏开始时,游戏控制模块会初始化游戏场景中必要的组件。
玩家角色控制模块是为玩家用户控制角色在游戏过程中的行为的。在游戏中,玩家角色要闲时、行走、奔跑、跳跃、攻击怪物、拾取物品等动作,这些动作动画在Animator动画系统中设置角色的有限状态机动画,触发动作动画的条件,增加触发的参数和设置数值。
玩家角色行走,首选要获取玩家角色对象上必须的组件,动画组件、Rigidbody组件。然后获取用户输入的数据,判断玩家是否按下了移动角色的按键,如果按下了移动按键,通过移动按键设置角色移动的数值,在移动玩家角色之前,需要检查判断玩家角色是否在地面,如果不在地面,首选要用重力影响玩家角色Y坐标值,使玩家角色落在地面上,然后使用Rigidbody组件按照数值移动玩家角色的位置,并播放角色行走动画。
玩家角色的血量、能量。玩家角色被攻击时会减少血量,玩家角色在攻击怪物时,会消耗能量值。当血量数值为0时,玩家会死亡。当能量数值小于50时,玩家无法施展攻击技能。
图4-1 玩家状态栏
在游戏中,玩家角色对象的各种游戏操作行为需要一个摄像机进行拍摄,把游戏的的进行呈现给玩家。摄像机模块的设计实现,首选要获取玩家角色对象的位置,根据玩家角色对象的位置,设置摄像机自己本身的初始位置。在游戏进行过程中,玩家角色对象的位置会不停地变化,摄像机的位置更加不断变化的玩家角色对象位置改变。摄像机模块使用了第三方的摄像机插件。
怪物AI模块是在游戏场景中,怪物对象与玩家角色对象的行为交互模块。在游戏加载过程中,怪物AI模块首选会实例化出怪物模型,然后把生成的怪物对象随机分布到游戏场景中的某个位置怪物的行为有三种方式巡逻、追击、攻击。怪物对象和玩家角色对象一样,有血量生命值,当被玩家对象攻击之后,血量会降低,如果数次受到玩家对象的攻击,血量值降为0,即表示怪物死亡。怪物对象的巡逻使用Unity3D引擎中带有NavMesh导航网格功能来实现巡逻。导航网格的生成,首先需要选取游戏场景中的地形对象,然后使用Unity3D引擎中的NavMesh Bake生成,在生成之前可以设置各种生成的参数,一般情况下使用默认的参数,也可以手动设置对某些网格对象的过滤。生成好导航网格之后,游戏地形中会出现青蓝色的网格地形块,这些颜色代表怪物对象可以巡逻行走的区域。怪物对象巡逻位置定义是随机生成的随机数,怪物对象会在这些定义好的范围内开始巡逻。怪物对象在巡逻时会调用FindGameObjectWithTag (“Player”)方式获得玩家角色对象的位置,然后计算玩家角色对象和怪物对象自身的距离,如果这个距离的小于一定的数值范围,就开始对玩家角色对象进行追击和攻击,如果在追击过程中,玩家角色对象逃跑了,并且跑出了追击的范围,怪物对象就会从追击变为巡逻。当玩家角色对象在怪物对象追击范围内时,并且达到攻击距离时,怪物对象会对玩家角色对象发起攻击,每次发起攻击时间会加一定的时间间隔,让玩家角色对象有所反应,玩家角色对象也会发起对怪物对象发起攻击,如果怪物对象数次受到玩家角色对象攻击后死亡,怪物对象会消失,怪物AI模块会在游戏场景的任意位置重新生成怪物对象。
图4-2 怪物模块定时在任意地点生成一定数量的怪物
4.3 图为怪物的导航网格
在4-3图中,青蓝色代表导航网格覆盖的区域,即图中标注为1的大片区域,这表示游戏中的怪物可以行走的区域。没有被青蓝色覆盖的区域,即图中标注为
2的零星小区块,都是怪物无法行走的区域。
怪物对象巡逻位置定义是随机生成的随机数,怪物对象会在这些定义好的范围内开始巡逻。
游戏背包模块是控制游戏中玩家角色对象携带使用的物品系统。当玩家用户按下游戏界面中的背包图标按键之后,游戏系统会展示玩家角色对象可用的物品,物品展示窗口使用Unity3D引擎中的UGUI Grid生成。游戏中的物品对象定义了物品ID属性、数量、使用物品之后给玩家角色对象带来的血量和能量等各种属性。玩家角色对象可以使用物品对象。
图4-4 背包系统图
图4-5 背包系统部分代码
图4-5为背包系统部分代码中的使用背包系统中的物品代码,当玩家角色对象使用完物品之后,物品给玩家角色对象带来血量和能量,然后,更新物品在背包系统界面的数量,如果物品刚好用完,背包系统界面就不再显示该物品。
玩家角色对象在游戏过程中,需要面对怪物的攻击和游戏场景中的各种机关,血量和能量会不断减少和消耗,需要不断地使用背包系统的物品来补充玩家角色对象自身的血量和能量,使得游戏可以进行下去。当背包中的物品不断减少的时候,玩家需要在游戏场景中捡拾物品放入背包中。背包模块在游戏场景中会定时某个时间段内在任意地点生成一定数量的物品供玩家角色对象捡拾物品放入背包中。
图4-6 背包系统生成的物品
本文介绍了游戏行业的发展现状,分析了典型的生存类题材游戏的作品,介绍了Unity3D引擎的技术重点、技术优势、功能特性、编程的常用模式。同时分析了实现一款生存类题材游戏的需求,并详细设计了完成游戏的各个模块,完成了游戏的测试和发布。
本文的主要工作如下:
(1)本文分析了典型的生存类题材游戏的内容和核心玩法,设计了一款生存类游戏的需求,采用Unity3D引擎的来进行开发。
(2)在游戏需求分析的要求上,对游戏代码逻辑进行功能划分,分为了几大逻辑模块。
(3)使用Unity3D引擎对游戏场景进行搭建,对场景中的游戏对象脚本进行了编写,完成了游戏模块的具体实现,充分使用了Unity3D引擎提供的主要功能特性,使用Unity3D动画系统管理游戏对象的动画,使用导航网格和碰撞体等组件完成对怪物对象的行为管理,编写了游戏的UI系统交互。
目录
基于Unity3D的求生游戏的设计与实现 1
第一章 绪论 3
1.1课题的研究背景 3
1.2课题的研究意义 4
1.3国内外发展现状 5
1.4论文的组织结构 6
第二章 Unity3D引擎技术 6
2.1 Unity 3D编辑器介绍 6
2.2 Unity3D引擎的功能 7
2.2.1 Unity地形编辑器功能 7
2.2.2 Unity3D引擎中的物理引擎系统 8
2.2.3 Unity3D引擎中的脚本系统 8
2.2.4 Unity3D引擎中的动画系统 8
2.3 Unity3D游戏开发流程 10
2.4 Unity游戏开发中的常见设计模式 11
2.4.1单例模式 12
2.4.2 事件模式 12
2.4.3 MVC模式 12
2.5 本章小结 13
第三章 游戏需求分析与设计 13
3.1 游戏需求分析 13
3.1.1 游戏故事背景介绍 13
3.1.2 游戏场景需求分析 13
3.1.3 主角技能需求分析 14
3.1.4 游戏背包系统 14
3.2 游戏开发过程 14
3.3 游戏的架构设计 14
3.4 本章小结 15
第四章 游戏系统的实现 15
4.1 游戏控制模块 15
4.2 玩家角色控制模块实现 15
4.3 摄像机模块的实现 16
4.4 怪物AI模块的实现 16
4.5 背包模块的实现 18
4.6其它功能的实现 20
4.6.1 游戏小地图实现 20
4.6.2 游戏场景中日夜交替 21
4.6.3 游戏场景中机关 22
第五章 游戏测试 23
5.1 测试计划 23
5.2 测试用例 23
5.3 测试结果 25
第六章 结论 28
参考文献 29
致谢 30
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。