第三人称角色控制_第三章.md 2.3 KB

有限状态机,目前有俩状态

![[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]]

其他参数,也是摸索,参考设置一下即可