下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、怪物,点击动作游戏,1,1.1玩法介绍,在怪物群中穿梭斩杀 武士能够自动行走. 点击按键攻击怪物! 点击鼠标按键后发起攻击,打倒怪物 在指定时间内尽可能多地击倒怪物。,2,1.1玩法介绍,一次性斩杀多个怪物, 对于密集分布的多个怪物,可以通过一次攻击就将其全部斩杀。 被砍中的怪物向四面八方飞散飞。 近处斩杀怪物将得到高分! 斩杀怪物时离得越近,得分越高。 如果不出现失误,怪物的数量将会增加!得分也会增加。 连续斩杀怪物后,出现的怪物数量会逐渐增加。 尽可能零失误地持续斩杀怪物,是获得高分的秘诀。,3,1.1玩法介绍,碰到怪物后将失败! 一旦武士和怪物发生接触,游戏就会结束。,4,1.2简单的操
2、作和爽快感,不一论创作何种游戏,都会有一些刚开始时就必须考虑的一些事情,那就是游戏的内容.我们在玩游戏的时候,在编写代码的时候,在漫无目的地浏览网负的时候,可能在很偶然的瞬间,脑子里突然浮现出了关于游戏的灵感。构思游戏题材的这个过程,其实是很有乐趣的。的主人公武士。问了之后才知道,除了角色外,还有把怪物逐个砍到的动画。就在那个瞬间,笔者萌发了“用这个角色来制作游戏”的想法就这样,在和设计师深人交流后,制作这个游戏的念头就产生了。决定游戏的内容时有一些要注意的事项。首先就是操作简单。为了便于操作,我们只使用鼠标的一个按键,没有移动和跳跃操作,略显单调,不过如果能营造出点击按健时的韵律感,一定是一
3、款有趣的游戏。还有一个要点是斩杀时的爽快感。画面上的大量怪物要夸张的向四处飞散。游戏的场景大体如下页的插图所示. 这次我们从角色的形象出发构思了游戏的内容灵感这尔西说不定什么时候就会冒出来.一旦感觉到“这好像可以作成游戏呢!”就要把它记录下来,也许什么时候就能派上用场了(确实是这样的)。,5,2.1脚本一览,6,7,2.2本章小节,无限滚动的背景 无限滚动的背景的改良 管理怪物出现的模式 武士和怪物的碰撞检测 得分高低的判定 使怪物被砍中后四处飞散,8,3无限滚动的背景,3.1关联文件 FloorControl.cs,9,3.2概要,在怪物这个游戏中,代表玩家的武士一直向右方前进,在游戏结束之
4、前势必将移动非常远的距离。如果将所需要的背景全部做到一个模型中,那么数据量将非常大。而且还必须在游戏开始的时候就生成这些背景,非常麻烦。在“怪物”这个游戏中,背景仅仅用于显示,和游戏的内容没有关系。即使重复出现同样的背景也不会影响游戏的内容。显示在画面中的也只局限于武士周围的一小部分而已。既然这样,我们就可以反复利用几个相同的组件来合成背景,并且只在玩家的周边将各个组件逐个显示出来(图)。,10,3.3背景组件的显示位置,我们准备了三种类型的背景组件。分别是背景A、背景B和背景C(图)。背景组件 通过循环并列显示A, B, C三种背景组件,就能够呈现出没有缝隙的背景。而实质上各个组件只有一个显
5、示在了画面中。 刚开始时,A, B, C各个组件都显示在武士的周围。当游戏开始武士移动了一定距离后,各个组件将移动到下一个合适的位置(图)。因为总共有二种组件,所以组件的移动宽度=3x一个组件的宽度。这个值在源代码中存放于变量total_width中。,11,12,请在Unity中启动游戏,按下暂停按键切换到场景(Scene)视图。可以看到背景只显示在了武士的周围(图)。,13,3.3背景组件的显示位置,把这个流程用代码描述出来,就是下面这样(从FloorControl类中摘出的一部分)。,14,3.3背景组件的显示位置,判断组建是否该移动的逻辑位于代码的(a)行。 floor_positio
6、n表示背景组件的位置,camera_positio。表示摄像机的位置。虽然程序中使用了摄像机的位置来决定背景的移动,但为了便于理解,这里我们使用武士的位置来说明。由于武士位于画面中央偏左的位置,严格来说摄像机和武士的X坐标值并不相同。但是为了便于理解背景移动的算法,不妨认为这个等式成立:摄像机的X坐标=武士的X坐标。 组件位于floor-position.x时,该组件再次出现时的坐标“floor_position.x + total_ width”如果摄像机的X坐标大于中间点floor_Position.x+total_ width/2.0f,那么距离下次出现的位置比距离现在的位置更近,组件将
7、移动到下一地点。,15,3.3背景组件的显示位置,3.4小结,这次我们介绍了无限循环的背景的基本制作方法。有些需要碰撞检测的游戏中会创建一个所谓的“地形”模型,但即便是在那种情况下,不影响游戏性的远景也常常通过这种循环显示背景组件的方法来表现。,16,4无限滚动的背景的改良,4.1关联文件 FloorControl.cs,17,4.2概要,上节介绍的算法中,背景只在每次调用Update()时移动一次。这样一来,如果武士移动的距离很长,就有可能出现背景和角色的移动不和谐的情况(图)。虽然我们这个游戏中并不会达到那样快的移动速度,但是有些游戏中出现过玩家角色移动,或者在场景中移动到错误位置的现象。
8、下面就让我们来考虑一下这种情况的解决办法。,18,4.3稍作尝试,让我们来实际体验一下上节所述的问题。作为调试,这里保留了武士能够一瞬间移动很远的距离这一功能。启动游戏后请按下W键。如图,可以看到在武士周围的背景不复存在了。 在Unity中执行时,将其切换到场景视图后使用逐帧模式观察,可以看到背景组件在缓缓移动。 在这种情况下,为了能够正确显示背景,该如何处理呢?,19,4.4背景组件显示位置的改良,在前一小节中,我们提到了相同类型的背景组件会按照total _wzdth=一个组件的宽带x组件数量(3个)的间隔重复出现。也就是说,程序将从下列值中,选取一个最靠近武士坐标的值作为背景组件出现的位
9、置。因此,只要求出上面算式(1)中。的值,就可以确定背景应该出现的位置。 接下来,让我们看看改良后的FIoorControl.Update方法。,20,21,4.4背景组件显示位置的改良,在图中,dist是武士的移动距离。将dist除以背景组件的整体宽度total_ width后的结果赋值给n。,22,4.4背景组件显示位置的改良,n是整数,但是经除法求出的结果并不一定是整数。因此把结果代入n之前,需要先做四舍五入处理。如果只是简单地进行类型转换(cast ),将直接舍去小数部分,请读者注意这一点。 之所以使用四舍五人而不是直接舍去小数部分,是为了在舍去和进位两种情况中选取最靠近武士坐标的情况
10、(图)。这种思路和上节提到的“越过中间点”的判断是一样的。,23,4.4背景组件显示位置的改良,可以使用Mathf.RoundTolnt方法来实现四舍五入。Mathf是Unity中的一个功能类。它含有很多基本的数学训算功能。 还有一种实现四舍五人的方法:让数字加上0.5后再舍去小数部分:可以利用Mathf.FIoorTolnt方法舍去小数部分。 使用RoundToInt和FloorToInt方法时,需要注意输入值为负数的情况:RoundToInt直接对绝对值进行操作,而FloorTolnt则会连同符号判断数值大小。 右表举例列出了分别用这两种方法对正负数进行操作的结果。 在这个游戏中,武士的坐
11、标只取正数。山于即使武士会往相反的方向移动也要判定“更近的一端”,因此程序中使用了RoundToInt方法。但是在某此游戏中,则可能需要找出“更靠近左边的一端”,这种情况下就应该使用FloorToInt方法总之,我们应当依据不同的情况灵活选择最好的方法。,24,4.4背景组件显示位置的改良,到此为止,我们对循环显示背景组件的方法做了改良。不过大部分情况下,使用前一小节所介绍的方法就足够了,一般没有必要考虑怪物和武士的移动。开发过程中花太多精力在无关紧要的事情上容易造成本末倒置,不过在时间允许的情况下适当做一些有益的尝试,一也许会对后续的开发很有帮助。请读者在明确“完成游戏”这一目标的同时,享受
12、这种探索的乐趣。,25,4.5小结,5怪物出现模式的管理,5.1关联文件 LevelControl.cs OniGroupControl.cs,26,5.2概要,游戏启动后不久,画面右方将出现怪物(图)。游戏的目标是不停地砍倒怪物并持续前进。,27,基本上,怪物只有跑向武士这一个动作。武士和怪物都沿直线跑动,玩家的操作仅仅是在合适的时机按下按键。非常简单。但是简单的操作绝不意味着游戏是无趣的。 在面向智能手机的游戏中,很多都仅仅支持点击屏幕操作。但其中大受玩家欢迎、百玩不腻的游戏也不占少数。 和这些游戏类似,我们这个游戏的精髓在于控制好点击按键的节奏:通过调整怪物出现的频率和速度,可以实现多种
13、不同的情境。 下面让我们花些时间来设计怪物出现的方式,让游戏变得更有趣。,28,5.2概要,5.3怪物出现的时间点,下面我们来看看该如何决定怪物出现的间隔。如果怪物相继出现的间隔很短,玩家就必须很快地点击按键,这样游戏就比较难。相反,如果怪物出现的间隔比较长,或者移动的速度比较慢,那么游戏就会比较简单。首先考虑到怪物的运动速度和出现间隔=难易度,我们在每次成功攻击怪物后就增加游戏的难度。当然这里需要设置一个上限,并使出现失误后游戏会回到最初的状态。每当武士前进了一定距离,怪物就将在其前方出现(图1.11 )。怪物出现的位置位于武士前,正好在画面之外即将进人画面的位置。如果这个距离过短画面上将会
14、突然出现一个怪物。反之如果过长,则会导致在画面的渲染区域之外存在许多怪物,增加不必要的处理开销。在设计怪物出现模式的时候,需算出武士从当前位置出发应当前进多远才让下一个怪物出现。如果玩家能很顺利地斩杀怪物,就让这个距离越来越短,而如果玩家出现失误,则恢复到最初的长度(图)。实际试玩这个游戏后,就可以体会到随着怪物出现的间隔变短,游戏的难度也在渐渐增加。不恰当的速度或间隔的上限值可能将汗致无法完全除怪物,因此游戏开发者们要通过反趁试玩来调整得出合适的值。,29,30,5.3怪物出现的时间点,31,5.3怪物出现的时间点,5.4怪物出现模式的变化,虽然速度加快会导致游戏变难,不过反复试玩几次后玩家
15、就会惊奇地发现自己完全能够适应了。即使是一开始觉得比较难的速度,经过jL次挑战后似乎也变得没有什么了这主要是因为目前怪物出现的间隔是固定值的缘故。 请读者想象一下和着音乐打拍子的情景。大家应该都有过这样的体会,即“即使节拍很快也跟上了”。其实两者的原理是一致的。因为不论速度多快,但节奏是相同的,所以玩家只需要按照同样的时间间隔点击按键就可以打倒怪物。 为了使玩家能够体会到点击按键的爽快感,要求游戏具备一定的节奏。不过如果一直使用同样的节奏,玩家很容易就可以消除怪物,这样游戏就显得有些无趣了。 也就是说,问题不在于速度,而在于节拍是固定的。那么我们试着每隔一段时间,就使用特别的出现模式。这里我们
16、制作了以下几种和普通模式不一样的特别模式(图)。,32,连续:怪物以短于正常时的时间间隔涌上来。 缓慢:怪物移动的速度比一般模式的最低速度还慢,并且出现的间隔很长。玩家在持续玩难度较大的关卡时会感觉疲劳,因此可以插入这个模式供玩家休息调整。 赶超:后出现的怪物追赶并超越更早出现的怪物。后登场的怪物将会更早到达武士的位置,这样会使玩家难于决定出手的时机,让其措手不及。可以说是这个游戏中比较难的一种模式。 加速减速:登场的怪物到达画面中央附近位置后加速,快要接近武士时减速,然后再朝武士前进。游戏的情景就好像伴随着“危险!快跑!”“不!这样不行!”这样的台词。相比用于控制游戏的难易度,这种模式更适合
17、用于营造游戏的演示效果。,34,5.4怪物出现模式的变化,我们把这4种特别模式和普通模式混在一起来控制怪物的出现。每经过若干次普通模式后就随机选择一种特别模式。普通模式的持续次数也通过随机决定(图)。,35,5.4怪物出现模式的变化,开始特别模式时,以及从特别模式恢复到普通模式时,必须确保画面中的怪物已经完全消失。这样可以防止特别模式和普通模式中的怪物同时出现。 比如我们看看在“加速减速”模式中出现普通怪物的情况。当怪物在画面右边加速前进时如果出现了别的怪物,有时就会造成两个怪物以非常短的时间间隔到达武士的位置(图)。 为了避免这种情况,需要在使用特别模式前后等待一段时间,直到画面上的怪物“编
18、队”完全消失。 那么,下面我们就来看看上述流程的实际代码吧。,36,5.4怪物出现模式的变化,37,5.4怪物出现模式的变化,38,39,(a)首先检查是否已经准备好了生成下一批怪物。就像前面所说明的那样,这是为了防止在特别模式中出现其他怪物。(b)如果还没做好生成怪物的准备,需要检查现在和下一批怪物的出现模式是特别模式还是普通模式。当满足下列两种条件时,可以生成下一批怪物。 (b1)当前为特别模式并且画面中已经没有怪物了 (b2)当前为普通模式(C)以现在的武士所在位置为基准,计算出怪物的生成位置。怪物从登场开始到消失为止,武士前进的距离随各模式不同而不同。因此,需要在准备好生成怪物的时候,就定好怪物将要产生的位置。计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年医疗废物规范化管理知识培训考核试题及答案
- 2026年江西省检察官、法官入员额考试真题(附答案)
- 小儿脊髓空洞症护理查房
- 医学分析-腰椎退行性变腰痛的MR诊断
- 硝酸铵中和工岗前核心能力考核试卷含答案
- 棉胶液制备工操作评优考核试卷含答案
- 景泰蓝掐丝工安全应急水平考核试卷含答案
- 砂石骨料生产工岗前技能综合实践考核试卷含答案
- 2026 年肝性脑病临床指南总结
- 货运汽车司机安全文明竞赛考核试卷含答案
- DB44-T 2749-2025 黄金奈李生产技术规程
- JTT 1540-2025 低温改性沥青
- 人教版七年级单词全
- 工会授权审批制度
- 2025年合肥水投线上笔试题目及答案
- 职工年度体检常见异常报告解读指南
- 大队长笔试题目及答案
- GB/T 45021.1-2024光伏组件性能测试和能量评定第1部分:辐照度和温度性能测量和功率评定
- 完整版:美制螺纹尺寸对照表(牙数、牙高、螺距、小径、中径外径、钻孔)
- 柏拉图法则分析课件
- 汽轮机DEH简介和SGC顺控启动
评论
0/150
提交评论