159 lines
4.4 KiB
Markdown
159 lines
4.4 KiB
Markdown
有一个图片,是透明的
|
||
因为阿尔法值的相关设置
|
||
|
||
![[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让特定层之间设定碰撞关系]]就好
|
||
|