Unity自制锁定敌人镜头与自由镜头丝滑切换

在Unity中开发战斗系统的时候,会需要镜头从第三人称自由镜头切换到锁定怪物镜头的情况,从而使得玩家方便进行战斗与自由移动。
尝试了用Cinemachine虚拟相机的LookAt来进行锁定的效果始终不符合预期(也可能是我没有调到合适的参数),于是就试着参考网上的教程来自己制作镜头和镜头切换了,这里就大概记录一下吧,顺便给自己整理下思路:
创建空对象CameraHolder,将他的位置放在角色的后脑勺,并创建子对象Pivot(意思是中心点,转动中枢),将主相机放在Pivot内,调整相机的位置使得相机能照到角色全身。

创建Camera Manager脚本,并挂载到Camera Holder处,以下是定义的一些参数。

声明的参数和初始化如下:
编写脚本函数,主要的函数有三个:
根据鼠标移动让镜头延迟跟随的函数,这部分根据玩家角色位置做个Lerp跟随就可以了:
镜头转角函数(是实现切换镜头的核心函数,我以自己的理解写了一些注解,仅供参考):
通过外部按键切换锁定状态函数:
函数调用
Tick与HandleRotation可在你的角色控制器中调用,以官方的ThirdPersonController.cs为例,可以加在原来的CameraRotation函数中,将其结构改为:
切换锁定状态函数SwitchLockOnState在任意Update函数调用即可,这里统一结构依旧在ThirdPersonController.cs调用:
大功告成,将对应的物件置入脚本中,就可以使用你定义的锁定键来实现敌人的锁定和解锁啦!

第一次写Unity的学习笔记,希望这个笔记能帮到正在学习Unity的你~
参考教程:
1、https://www.youtube.com/watch?v=ud3_tderJOQ
2、https://www.bilibili.com/video/BV1gW411T7yb/?spm_id_from=444.41.top_right_bar_window_custom_collection.content.click&vd_source=e901f99fe3148e0c73c7ea3e6107027f

CSDN文章链接:https://blog.csdn.net/Origamihui/article/details/132237699