Unity Cinemachine使用

安装

在Window->Package Manager内 搜名字直接安装。

image.png

这里有官方的示例

代码使用

直接挂载在摄像机上也可以,视频教程有很多。

    // 主摄像机添加 CinemachineBrain
    Camera camera = Camera.main;
    var brain = camera.GetOrAddComponent<CinemachineBrain>();
    brain.m_ShowDebugText = true;
    brain.m_DefaultBlend.m_Time = 1;

我目前做的是一个镜头的切换,切换的过程有一个自带的滑动效果。

// 创建两个位置的虚拟摄像机。
vcam = new GameObject("VirtualCamera").AddComponent<CinemachineVirtualCamera>();
vcam.m_Priority = 10; //Priority 优先级来控制当前播放哪个摄像机拍摄出来的画面。
//vcam.m_Follow = this.transform;
vcam.m_LookAt = this.transform;
//摄像机偏移
composer = vcam.AddCinemachineComponent<CinemachineComposer>();
composer.m_ScreenX = 0.50f;
composer.m_ScreenY = 1;

lockvcam = new GameObject("LockVirtualCamera").AddComponent<CinemachineVirtualCamera>();
lockvcam.m_Priority = 11;
//lockvcam.m_Follow = this.transform;
lockvcam.m_LookAt = GameObject.Find("Cylinder").transform; //第二个视角下 锁定一个物体。
lockvcam.enabled = false;

在不同的情况下控制 lockvcam.enabled = true; 用来设置当前显示哪个摄像机。

摄像机的移动这边没有使用m_Follow,因为之前算过一遍大概的值,就直接使用了原来的计算。

其他

旋转视角

public void Rotate(float x, float y)
{
    mYRotation += x * mSensitivity * Time.deltaTime;
    mXRotation -= y * mSensitivity * Time.deltaTime;
    mXRotation = Mathf.Clamp(mXRotation, 0f, 75f);
}
private float mSensitivity = 100f;