节奏天国_第三章
回到音轨控制者,声明一下,需要使用到的,各个对象变量;
然后写一个,检测是否碰击中音符对象的方法;
再写一个,音轨控制器,初始化的方法;
在音符管理器中,再写一个方法,是用来检测,是否生成下一个音符的;
回到关卡类中,新增一个通用方法,用来计算玩家,在当前关卡得分的评定等级;
再写一个通用方法,是用来处理,完成当前关卡的逻辑处理;
完善一下,当前关卡的游戏执行逻辑,也是通用的部分;
回到音符控制器,添加一个函数方法,用来判断,事件负荷上,音符ID是否跟当前音轨ID匹配;
继续添加两个方法,分别是添加事件,和清除无效音符的;
继续添加,重置音轨状态,和回收音轨控制者的函数方法;
回到关卡类,完善一下,退出关卡的相关逻辑;
继续加一下,事件音轨的匹配方法;
添加一个,进入当前关卡,播放音乐,正式开始游戏的方法;
以上,就是关卡类的,通用方法了; 然后,回到音符对象类,完善一下,音符对象的函数方法;
继续,添加一个更新函数;
以上,就是音符对象的各个函数方法接口了;
回到游戏管理类中,添加一个“游戏启动”的整合相关; 其中,添加一个,初始化游戏的方法;
回到推动游戏进程的管理类中,创建一个方法,是用来重置游戏的;
再创建一个空方法,是用来实例化关卡对象的; (这个是用来,实例化具体关卡的,所以是涉及到,每一关具体的业务逻辑,所以需要后面再补充)
再创建一个方法,是用来加载当前关卡对象,开始游戏的;
继续加一个方法,是用来退出当前关卡的;
继续补充两个方法;
回到游戏管理类中,补全“游戏管理”整合的,函数调用接口;
然后,补全一下,游戏启动的接口;
然后,在游戏管理类中,补全Start函数,Update函数;
回到关卡类,加上第一关的类,当然是继承自关卡类的; 需要实现的类,也点击安按钮,自动添加一下;
然后,加一下,需要使用到的对象;
可以看到,上面的对象,有一个是首长,所以就说明,第一关这些具体逻辑,是涉及到了,具体的游戏内,运行对象的;
而首长的设定是,后面会变成敌人的,所以在处理首长之前,需要新建一个敌人(雪人)的脚本,而敌人本质上,就是音符对象,所以敌人,又是继承自,音符对象的;
在游戏文件夹中,创建一下;
调用一下,需要使用到的命名空间;
在游戏文件夹中,再创建一个,首长的脚本文件;
添加一下,命名空间的引用,优化一下代码结构,继承关系,声明一下,需要使用到的各个对象;
首长在最开始的时候,设定不是坏人,而是引导玩家的一个角色,所以会有,他跟玩家对象的教学关卡,也就有,他跟玩家的对话;
所以新增几个方法,分别是用来操作,显示和隐藏提示内容的;
首长跟玩家对话完毕后,会跑出屏幕外,所以加一个接口,是用来处理,跑出屏幕外的;
继续写两个方法,分别是,重置司尼状态的,和对象池回收的; 其中是有包含,父类中的,回收音符的方法;
然后,写好首长的Awake唤醒函数; 其中包含了事件的注册,初始位置的赋值等操作;
以上,就是首长,在教学关,需要用到的函数方法了; 而首长这个脚本,是需要挂在,首长这个预制体身上的;
而首长是有动画的,在原工程可以看到,所以是直接将动画,复制过去就好;
然后可以发现,首长的动画控制器,是一个衍生的动画控制器; 而衍生的动画控制器,是需要一个父动画控制器的,而目前为空;
它的父动画控制器,是玩家的动画控制器,所以需要把玩家的动画,也整体复制过来;
复制过去之后,首长的父动画,就自动关联上去了; 但是其中的动画内容是空的;
也没关系,直接拖曳填充过去,即可;
动画准备好了,脚本也准备好了,之后就直接复制,对应的预制体过去就好;
复制过去之后,可以看到,动画是自动挂上去了,而脚本文件没有自动挂上去,手动挂上去就好;
完成挂载后:
在关卡中,还需要使用到的,比较关键的物品,还有这个,音符控制器(可以看作是一个空物体),直接复制过去就好;
然后,还有一个,比较关键的预制体,就是玩家本身; 玩家本身是没有挂载脚本,只有动画,直接复制过去就好;
这两个预制体,分别是,目标物的行进路径,和销毁路径,也是直接复制过去就好;
然后玩家需要在第一关中,击打的雪人,也是需要一个脚本控制的,创建一下;
优化一下代码结构,它默认也是一个音符对象(被玩家击打,所以也是继承自音符对象,即可)
移动也是通过dotween控制即可;
写两个方法,分别是,播放被击中的音效,还有对象池回收相关的;
然后,重写一下,受击函数;
然后,重写一下初始化函数;
再重写一下Update更新函数;
在原工程中,这个就是第一关中,需要使用到的,目标雪人,直接复制过去就好;
依然会提示,脚本丢失; 没事,直接放上去就好;
放上去之后:
然后,还需要一个,雪人音轨控制者,用来单独控制雪人的生成相关,是继承自,默认的音轨控制者; 先在Game目录下,创建脚本;
完善一下代码结构; 写好检测,生成下一个音符的接口;
回到关卡类,在第一关中,写一个方法,是用来处理,获取雪人的移动路径,和销毁路径的;
然后,完成第一关的,进入关卡方法的重写操作;
加一个标签,为了跟后面的区分;
加一个训练模式的整合;
训练模式的设定,是首长会向玩家,说出不同的指令,例如攻击和跳起,而玩家需要执行指令;
然后,就是重玩训练模式的方法,就是各项的重置了;
准备好这些之后,就写一下,正式进入训练模式的函数接口了;
完成第一关和训练关的,进入逻辑之后,就可以开始重写,第一关的整体逻辑处理了; 但是可以发现,override的时候,出现了报错提示;
原因是,它的父类中,这个函数不是virtual虚函数,修改一下就好; 报错就消失了;
以上,就是第一关的相关逻辑了;