关卡
本文将讲解如何构建关卡。先从“直线型道路”关卡开始。
Straight Paths Level
层级结构列表中的游戏对象:
Straight Paths Level中游戏对象的层级结构
所有的路径都是通过预制件(见上图蓝色的WideStraightPath)来复制的,直线型道路的路径要比旋转型道路更宽。场景中还有一些立方体状的3D对象(上图中的Cubes),作为路径的地板。另外还有一些简单的3D坐标,NewPathSpawn以及SpawnPoints。SpawnPoints用于指定生成新物体的位置,例如糖果、障碍物等。
为了节省内存资源,游戏不会在一开始就生成所有路径。实际上,游戏需要生成N+1条路径,N是当前Max所在的路径位置。可以利用一个简单的碰撞器BoxCollider,当Max与它发生碰撞, 则通过PathSpawnCollider脚本生成新路径。在直线型道路的关卡中,新生成的路径位于“NewPathSpawn”坐标,这个坐标就是当前路径的终点。
当玩家与PathSpawnCollider发生碰撞时,在NewPathSpawn位置生成新路径
NewPathSpawn的位置就是新路径的生成点
Character游戏对象下包含相机和Max模型,此外还有Character Controller 组件和CharacterSidewaysMovement脚本。通过该组件和脚本的控制,相机会始终保持在Max上方的位置,这是第三人称视角游戏中的常见角色控制方式。
Canvas包含两个文本对象。Directional Light就是很简单的平行光光照,ScriptHolder对象包含了本教程上半部分介绍的GameManager单例脚本。
PathSpawnCollider类——路径生成器
此脚本适用于两种关卡,主要功能是根据Max当前奔跑位置来生成下一段路径。
public class PathSpawnCollider : MonoBehaviour { public float positionY = 0.81f; public Transform[] PathSpawnPoints; public GameObject Path; public GameObject DangerousBorder; } |
脚本首先设置了几个公共变量,可以在Unity编辑器中设置。
- PositionY:用于将RedBorder放置到正确的Y轴位置。
- 数组PathSpawnPoints:用于保存下一段路径及边界的生成坐标。在“直线型道路”关卡中,数组内只有一个元素。但“旋转型道路“关卡中,该数组需要3个元素,其中一个是新路径的位置,另外两个是RedBorder障碍物(Max一旦碰撞到它,则游戏失败)。
- Path:物体包含路径预制件。
- 数组DangerousBorder:包含了用于“旋转型道路”关卡的RedBorder预制件,在“直线型道路”关卡中为null。
void OnTriggerEnter(Collider hit) { //player has hit the collider if (hit.gameObject.tag == Constants.PlayerTag) { //find whether the next path will be straight, left or right int randomSpawnPoint = Random.Range(0, PathSpawnPoints.Length); for ( int i = 0; i < PathSpawnPoints.Length; i++) { |
文章来源: Unity官方网站
- 还没有人评论,欢迎说说您的想法!