99 lines
2.3 KiB
Markdown
99 lines
2.3 KiB
Markdown
有限状态机,目前有俩状态
|
||
|
||
![[Pasted image 20240306124321.png]]
|
||
|
||
状态基类;
|
||
初始化的时候,是传参赋值,状态机控制器
|
||
|
||
![[Pasted image 20240306124457.png]]
|
||
|
||
有一个,玩家状态基类:
|
||
|
||
![[Pasted image 20240306124624.png]]
|
||
|
||
玩家状态也有俩子类
|
||
|
||
![[Pasted image 20240306124543.png]]
|
||
|
||
![[Pasted image 20240306124553.png]]
|
||
|
||
![[Pasted image 20240306124600.png]]
|
||
|
||
状态也是对象池,统一管理
|
||
|
||
![[Pasted image 20240306124749.png]]
|
||
|
||
父类的,进入,退出,更新,仨虚函数
|
||
|
||
![[Pasted image 20240306124804.png]]
|
||
|
||
其中,退出的函数重写,只有移动的状态类,因为前面,它注册了走路声,相关的动画事件函数,退出的时候,需要移除一下动画事件
|
||
|
||
![[Pasted image 20240306124852.png]]
|
||
|
||
状态控制器逻辑
|
||
|
||
![[Pasted image 20240306125003.png]]
|
||
|
||
获取状态,也是从stateDic状态字典
|
||
|
||
![[Pasted image 20240306125038.png]]
|
||
|
||
切换状态的时候,就是退出当前状态,然后切换成,新状态即可
|
||
|
||
![[Pasted image 20240306125105.png]]
|
||
|
||
控制器停止工作:
|
||
使用了GetEnumerator遍历所有状态,进行退出
|
||
|
||
![[Pasted image 20240306125140.png]]
|
||
|
||
销毁动画控制器的话,也是统一对象池管理的
|
||
|
||
![[Pasted image 20240306125211.png]]
|
||
|
||
玩家控制脚本,对状态控制器,完成初始化,默认状态是Idle;
|
||
|
||
![[Pasted image 20240306125256.png]]
|
||
|
||
运行游戏,移动一下,就可以顺利构建出,完整的playable图例
|
||
|
||
![[Pasted image 20240306125356.png]]
|
||
|
||
动画过渡,如前所述,是用了协程
|
||
|
||
![[Pasted image 20240306131211.png]]
|
||
|
||
动画过渡的具体逻辑
|
||
修改权重即可,如果没有过渡时间,就直接硬切
|
||
|
||
![[Pasted image 20240306131324.png]]
|
||
|
||
当前游戏,都没有硬切,过渡时间设定为0.25
|
||
|
||
![[Pasted image 20240306131533.png]]
|
||
|
||
相机控制,用了这个常见插件
|
||
|
||
![[Pasted image 20240306131907.png]]
|
||
|
||
创建入口
|
||
|
||
![[Pasted image 20240306131937.png]]
|
||
|
||
![[Pasted image 20240306132010.png]]
|
||
|
||
默认相机,会自动加上,这个脚本;
|
||
简单修改一下参数
|
||
|
||
![[Pasted image 20240306132038.png]]
|
||
|
||
相机逻辑设置,跟随和看向
|
||
|
||
![[Pasted image 20240306132201.png]]
|
||
|
||
相机跟随鼠标移动
|
||
|
||
![[Pasted image 20240306132430.png]]
|
||
|
||
其他参数,也是摸索,参考设置一下即可 |