obsidian/笔记文件/2.笔记/Boss战相关.md
2025-03-26 00:02:56 +08:00

4.4 KiB
Raw Permalink Blame History

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

!Pasted image 20230707164442.png

!Pasted image 20230707164523.png

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

!Pasted image 20230707165706.png

这个就是boss

!Pasted image 20230707165749.png

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

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

!Pasted image 20230707165908.png

!Pasted image 20230707165947.png

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

!Pasted image 20230707170024.png

还有一个Boss区域

!Pasted image 20230707170206.png

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

!Pasted image 20230707170224.png

先回到触发boss战的逻辑

!Pasted image 20230707170558.png

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

!Pasted image 20230707170622.png

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

!Pasted image 20230707170655.png

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

!Pasted image 20230707171302.png

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

!Pasted image 20230710173157.png

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

!Pasted image 20230710174012.png

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

!Pasted image 20230710174042.png

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

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

!Pasted image 20230710175512.png

这个就是Boss的实体

!Pasted image 20230710181431.png

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

!Pasted image 20230710181645.png

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

!Pasted image 20230710181815.png

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

!Pasted image 20230710181907.png

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

!Pasted image 20230710181933.png

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

!Pasted image 20230710190104.png

!Pasted image 20230710190334.png

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

!Pasted image 20230710182126.png

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

!Pasted image 20230710183430.png

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

!Pasted image 20230710184247.png

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

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

!Pasted image 20230710184821.png

!Pasted image 20230710185121.png

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

然后销毁自己

!Pasted image 20230710185215.png

!Pasted image 20230710185254.png

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

!Pasted image 20230710192315.png

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

!Pasted image 20230710192405.png

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

!Pasted image 20230710192429.png

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

!Pasted image 20230710192659.png

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