有一个图片,是透明的 因为阿尔法值的相关设置

这上面挂载的,就是开启最终战相关的脚本

这个就是boss

对应的这玩意儿,Boss设定是主角的心魔

Boss上面只有一个歌声,虽然名字不一样,实际上跟主角身上挂载的Song是同一个预制体

Boss上面挂载的,有一个boss脚本

还有一个Boss区域

上面有一个简单的盒子碰撞体,还有挂载了,区域检测相关的逻辑

先回到触发boss战的逻辑

可以看到,一切结束之后,是回到第一关的

然后,在更新函数里,通过布尔判断,是否要开启boss战 首先还是背景透明度的时间渐变,场景会变黑 根据阿尔法数值的差值绝对值,判断是否要开启boss战 其中还判断了一下显隐属性 参考activeInHierarchy和activeSelf的区别就好

这就是开启boss战的具体逻辑 是通过传参的浮点数值大小进行判定 如果通关了,开始整俩协程:加载场景、创建飞鸟

也是简单的把场景开启加载,具体参考这个AsyncOperation场景API接口就好 鸟群也是实例化

这里是判断,是否触发boss战的区域

上面挂了一个boss区域检测相关的脚本 还有一个盒子碰撞器

也是在碰撞器检测里,写逻辑判断 其中有一个触发条件是,主角身上的眼泪数量tearList要大于等于5,才可以开始触发,进入boss战

有一个判断是否是第一关的isFirstLevel的布尔,用来修改摄像机位置的:从第二关切回第一关

这个就是Boss的实体

其实就是跟主角的组件基本类似的,有刚体有碰撞体,还挂了一个Boss的脚本

在前面的,开启最终战相关的脚本,是会在开始函数,就设置为false,隐藏起来

回到Boss脚本,各种简单的初始化操作

帧更新函数 有调用一个移动函数

移动的逻辑里,判断是,如果生命值高于3,就会是Walk,否则就是Run跑步

实现逻辑里,是会追逐主角 而且距离机制是,跟生命值挂钩,如果生命值越低,就越不会去追,因为减去的是,生命的倒数 而且在判断追逐条件满足的情况下,是不会去吟唱的

如果不是追逐的逻辑,计时器时间到了之后,BOSS就会发出魔音攻击

回到unity引擎,可以看到Boss目录下的唱歌的预制体,虽然还是Song,但是名字是BossSong

来到主角的碰撞触发函数逻辑 可以看到,如果碰撞体的名字是BossSong,逻辑处理,销毁一个主角收集的眼泪

如果眼泪全被销毁了,主角触发哭泣,然后死亡, 重新加载第二关

回到Boss的脚本 如果Boss被主角的Song碰撞体触发,也会生命值减少 生命值小于等于0的时候,传参是0,触发关闭Boss战的相关逻辑

然后销毁自己

补充一下,层级是有Song的这个,是对应了歌声预制体的

需要修改一下物理属性的设置

展开目录后,可以点击,取消勾选

这样就不会出现,Boss本身跟挂载在Boss身上的歌声组件,碰撞出现奇怪的逻辑触发

也可以参考unity让特定层之间设定碰撞关系就好