其他
Unity教程|3D无尽跑酷游戏(上)
《地铁酷跑》游戏
《神庙逃亡》游戏
本教程将教大家如何使用Unity来制作一款3D跑酷游戏,分为上下两部分,今天先为大家介绍上半部分。游戏共有两个关卡,包含所有的跑酷游戏机制。 请点击[阅读原文]下载教程资源及示例工程。
游戏启动时,屏幕上出现两个选择游戏关卡的按钮。在“旋转型道路”关卡中,Max在当前路径上保持直线奔跑,在拐角处才可以选择左右滑动进行转向。奔跑过程中Max还要通过跳跃来躲避障碍物。
注意:游戏共有两种输入方式(按方向键,或者在触摸屏上滑动)。
在“直线型道路”关卡中,Max在比较宽阔的道路上前行,游戏过程中可以通过左右移动切换轨道或跳跃来躲避障碍物。
理论上在两种关卡中,游戏都可以无限持续下去。只有当Max撞上红色的墙(旋转型关卡中)或撞到障碍物(两个关卡中)时,游戏才会结束。之后玩家可以轻轻点击屏幕重新开始。Max在关卡中奔跑得越久,游戏得分越高。
下面来实现游戏代码并构建Unity场景。首先介绍两个关卡都会用到的共同类,然后再分别解释各个关卡。
请点击[阅读原文]查看文中所有的脚本代码。
Intro level脚本使用UGUI控件实现选择关卡的两个按钮,调用Unity的SceneManager API让玩家进入对应的关卡。
游戏中的多种预制件都带有TimeDestroyer脚本,尤其是糖果、障碍物以及道路。它将在Max没有死亡的前提下,一段时间后让游戏对象消失。
如上图所示,每个障碍物都是一个触发器类型的碰撞体。代码非常简单,就一个方法,当Max撞到障碍物时触发。一旦发生碰撞,则Max死亡且游戏结束。
RedBorder用在“旋转型道路”关卡。用红色是因为它比较显眼,Max也要避免与红墙碰撞。
RedBorder预制件
RedBorder脚本关联RedBorder游戏对象。与前面的障碍物一样,当Max碰到RedBorder对象就会死亡,同时游戏结束。
Game Manager脚本用来保存一些基本属性,比如游戏状态以及“Die”方法。Game Manager脚本是一个单例,整个游戏过程中只有一个实例。
Random Material用来为地板上的方块随机选取一些颜色,以区分不同的路径。
旋转型道路关卡,可以看到道路上的随机颜色块
四个糖果预制件
Candy组件
使用Unity的Mecanim动画系统来驱动Max。可以在Mecanim里面创建一个状态机,来实现:
Max模型所有必要的状态 每种状态对应一个动画 状态之间的转换以及发生转换的条件
下面是Max的动画状态机,两个bool变量(jump及started)会触发状态改变:
空闲状态下,started变量为True后切换到run状态,并播放动画:
当Max正在跑动时,如果jump变量为True,切换至jump状态,角色进行跳跃:
将run动画赋给run状态:
目前已经实现了动画状态,但如何修改这两个变量呢?这需要参考Max的动画控制器对象,具体的内容将在下篇介绍移动脚本时解释。
Vision VR/AR 亚洲峰会门票优惠仅剩最后6天。优惠购买从速哦。
VR Master Class 本年度最后一场内容曝光,火热报名中。