unity 3D期末大作业课程设计 |
您所在的位置:网站首页 › 人物移动代码 › unity 3D期末大作业课程设计 |
0 源代码 1 需求分析 设计一个单机跑酷游戏,实现“人物移动(跳跃、向左和右移动)”、“游戏计时”、“道具自动生成”、“运动加速”、“拾取金币”、“拾取磁铁”、“拾取跑鞋”、“游戏菜单”等功能,具体要求如下: 1.1 人物移动人物运动分为3种,向左移动、向右移动和向上跳跃。 左右移动:添加一个状态位,最左侧跑道状态位为0,中间跑道状态位为1,最右侧跑道状态位为2。 跳跃运动:添加一个刚体属性,勾选重力。在脚本中,获取重力属性,跳跃时,施加一个向上的作用力,物体向上跳跃。 1.2 游戏计时使用协程,在游戏没有暂停的状态下,每过一秒,计时+1s。 1.3 道具自动生成1.3.1 跑道游戏在开始后,会先实例化5次,在视线内生成一些跑道。跑道需要移动,并且移动速度越来越快。 当跑道运动到摄像机(视线)后面时,跑道自动销毁。在销毁前,跑道会向工厂类发送继续实例化新跑道的消息。 1.3.2 金币金币在跑道实例化时,会通过多轮随机函数,判断是否需要实例化。实例化在跑道的左、中、右侧,并成为跑道的子物体。 1.3.3 磁铁磁铁在跑道实例化时,会通过多轮随机函数,判断是否需要实例化。实例化在跑道的左、中、右侧,并成为跑道的子物体。 磁铁可以自动收集到金币,不需要和金币接触。 1.3.4 跑鞋跑鞋在跑道实例化时,会通过多轮随机函数,判断是否需要实例化。实例化在跑道的左、中、右侧,并成为跑道的子物体。 跑鞋可以人player跳跃的更高,更好躲避高度较高的障碍物。 1.3.5 火车火车在跑道实例化时,会通过一轮随机函数,判断是否需要实例化。实例化在跑道的左、中、右侧,并成为跑道的子物体。 火车自身也会向前运动,并且火车的高度大于玩家的跳跃高度,如果玩家没有跑鞋,只能到其他没有火车的跑道躲避火车。 1.3.6 障碍障碍在跑道实例化时,会通过多轮随机函数,判断是否需要实例化。实例化在跑道的左、中、右侧,并成为跑道的子物体。 玩家要躲避障碍,有2种方式。一是跳跃躲避障碍,二是移动到其他没有障碍的跑道躲避障碍。 1.3.7 高墙在跑道实例化时,会通过一轮随机函数,判断是否需要实例化。实例化横在跑道前方。通常配合其他道具,增加游戏难度。 玩家躲避高墙,只能跳跃。同时,还要注意其他道具的影响。 1.3.8 悬崖在跑道实例化时,会通过一轮随机函数,判断是否需要生成。生成方式是在实例化时,坐标值往前面移动5个单位长度,达到制造悬崖的效果。通常配合其他道具,增加游戏难度。 玩家躲避悬疑,只能跳跃。同时,还要注意其他道具的影响。 2 流程图图2-1 关卡图3 系统实现3.1 预制体以下图片均来自于百度图片: 图3-1 预制体3.2 HUD图3-2 HUD面板3.3 工厂类图3-3 工厂类4 系统测试4.1 实例化跑道及道具图4-1 实例化 4.2 跳跃 普通跳跃: 图4-2 普通跳跃跑鞋跳跃: 图4-3 跑鞋跳跃4.3 躲避火车图4-4 躲避火车4.4 拾取金币图4-5 拾取金币4.5 磁铁吸收金币图4-6 磁铁拾取金币5 系统总结本次课程设计,总体完成的比较顺利,遇到的问题基本上能够解决。 在游戏开发的过程中,遇到的最大的问题就是向预制体进行消息推送。首先是在预制体实例化的过程中,没有给实例化的对象加上名称,导致GameObject使用Find函数,找不到对象,无法进行消息推送。这个问题的解决其实是比较轻松的,但是对于还没有实例化的预制体进行消息推送,就会出现问题。这一问题的解决办法是,在预制体脚本中,获取要进行推送的对象的脚本的属性,通过GetComponent函数,直接获取要传递的消息,这样就能很好的解决还没有实例化的对象获取将要传递的信息。 本系统也存在一定的不足,主要表现在道具的完全随机生成的,这样就会给玩家的跑酷增加难度。比如,在生成一个悬崖后,后面可能马上生成火车和高墙,而玩家是不能连续跳跃的,这样就会出现玩家因躲避不及,而导致游戏结束,影响游戏体验。在真正的跑酷游戏中,金币一方面可以被拾取,另一方面也能起到引导玩家走位来躲避障碍的作用,在本游戏中这一点没有体现。 结合以上特点,本次游戏在道具生成逻辑上,还有一些改进的空间。如障碍物的生成逻辑,不能让障碍物一下连续生成,否则会形成无解的局面。另外,金币也应该有一定的引导躲避障碍的作用。在后续的改进中,如果能实现以上功能,将会有很好的游戏体验。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |