效果展示
代码
using UnityEngine;
using Cinemachine;
public class CameraController : MonoBehaviour
{
private CinemachineFreeLook freeLookCamera;
void Start()
{
freeLookCamera= GetComponent<CinemachineFreeLook>();
}
// Update is called once per frame
void Update()
{
if(Input.GetMouseButton(0))
{
freeLookCamera.m_XAxis.m_InputAxisValue = Input.GetAxis("Mouse X");
freeLookCamera.m_YAxis.m_InputAxisValue = Input.GetAxis("Mouse Y");
}
else
{
freeLookCamera.m_XAxis.m_InputAxisValue = 0;
freeLookCamera.m_YAxis.m_InputAxisValue = 0;
}
}
}
操作步骤
1.PackageManager中Packages选择UnityRegistry,搜索Cinemachine并安装
2.在Hierarchy窗口中右键创建新的FreeLookCamera
3.将上面的脚本挂在新创建的相机上
FreeLookCamera关键参数功能
Follow和LookAt
Follow: 摄像机跟随移动的目标,一般选择玩家
LookAt:摄像机看向的点,可以在玩家下面创建一个空物体,LookAt设置为这个空物体,可以很方便去调整摄像机看向的点
AxisControl轴控制
Y Aixs控制摄像机高低位置的轴,X Aixs控制水平方向的轴
Value: 在轴上的相对位置,决定摄像机具体的位置
Speed:摄像机转向的最大速度
Accel Time/Decel Time:摄像机加速到最大速度或减速到0需要的时间,例如当Accel Time设置为10,Input Axis Value为1时,摄像机的旋转速度在10秒内逐渐加速直到最大速度
Input Axis Name:决定InputAxisValue的输入的名称,默认为Mouse X和Mouse Y,在ProjectSettings->InputManager中可以调整对应的名称,由于本文章采用代码控制输入,因此将该名称设置为空
Input Axis Value:在对应轴上的输入,最小为0,最大为1,如果输入在0~1之间,摄像机旋转的速度会变慢
Orbits摄像机轨道
当选中摄像机并打开Gizmos时,在Scene窗口可以看见摄像机的轨道,摄像机将会在轨道上运动
BindingMode:摄像机的绑定模式,不同的绑定模式会有不同的追踪效果下面是Simple Follow With World Up和World Space的区别


TopRig,MiddleRig,ButtomRig,调整三条轨道的半径和高低
博客创作不易,求点赞求关注~
如果有不准确的地方欢迎在评论区指出