obsidian/笔记文件/2.笔记/第三人称角色控制_第三章.md
2025-03-26 00:02:56 +08:00

2.3 KiB
Raw Permalink Blame History

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

!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

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