Unity学习笔记 Cinemachine沿着轨道自动匀速移动

前言

通过Cinemachine提供的组件可以让我们的摄像机沿着自定义的轨道来匀速运动,完成这个功能需要三个必要部分:

  1. 摄像机 (Virtual Camera)
  2. 轨道路径 (Dolly Track)
  3. 轨道小车 (Dolly Cart)

该功能可由两种方式实现,不过都是大同小异。
方法一是三个部分都独立开,将虚拟相机的Body选择Tracked Dolly并使用AutoDolly功能,该方法是让摄像机根据绑定的Follow对象(也就是轨道小车)做自动沿轨道运动。
方法二是将虚拟相机放在轨道小车下,虚拟相机Body选择Do Nothing即可跟随着轨道运动。

方法一、使用AutoDolly

第一步:创建轨道路径(Dolly Track)

创建空物体,添加CinemachineSmoothPath或者CinemachinePath组件绘制路线。

  • CinemachineSmoothPath的话,路径弯曲会被自动平滑
  • CinemachinePath的话,路径的曲度可以通过弯曲的曲线自己调整

这里我使用CinemachineSmoothPath,然后在Scene自由编辑每个路径点(waypoint)的位置和旋转角度。
这里具体的参数含义就不过多介绍了,只说明一下用到的:

  • Resolution:代表路径的精细度,数值越大,路径点之间的分段就越多
  • Looped:路径是否头尾相连
  • Waypoints:自定义的路径点,其中Roll代表翻转角度

Unity学习笔记 Cinemachine沿着轨道自动匀速移动_第1张图片Unity学习笔记 Cinemachine沿着轨道自动匀速移动_第2张图片

第二步:创建轨道小车(Dolly Cart)

创建空物体,添加CinemachineDollyCart组件,作用就是让这个物体作为轨道的小车随着轨道进行运动
这里使用到的参数设置如下:

  • Path:选择对应的轨道路径
  • Speed:轨道小车运动的速度
    Unity学习笔记 Cinemachine沿着轨道自动匀速移动_第3张图片

第三步:创建虚拟摄像机(Virtual Camera)

创建一个CinemachineVirtualCamera,对应的设置如下

  • Follow:代表相机要跟随的目标,选择刚刚创建的轨道小车(Dolly Cart)
  • Body:代表相机运动的算法,选择Tracked Dolly,进行跟踪轨道运动
    • Path:代表要跟踪的路径,选择刚刚创建的Dolly Track
    • Camera Up:代表运动时摄像机的朝上坐标,根据自己要的效果选择,这里我选择Path
      Default -> 不修改VirtualCamera的up的值,使用Cinemachine Brain中World Up Override属性代替。
      Path -> 使用当前位置Path的up向量
      Path No Roll -> 使用当前位置Path的up向量,但是不受Roll影响
      Follow Target -> 使用Follow目标的tramsform.up
      Follow Target No Roll -> 使用Follow目标的tramsform.up,但是不受Roll影响
  • Auto Dolly:控制相机是否自动沿着轨道运动
    • Enabled:开启该功能,若不勾选,只会看到Dolly Cart在移动,但是摄像机不会跟着动,切记一定要勾选

Unity学习笔记 Cinemachine沿着轨道自动匀速移动_第4张图片
这里提醒一下,要想Cinemachine的相机起作用,确保你的主相机上面绑定了CinemachineBrain这个组件
在这里插入图片描述
Unity学习笔记 Cinemachine沿着轨道自动匀速移动_第5张图片

方法二、绑定虚拟相机在轨道小车上

第一步:创建轨道路径(Dolly Track)

同方法一

第二步:创建轨道小车(Dolly Cart)

同方法一

第三步:创建虚拟摄像机(Virtual Camera)

创建一个CinemachineVirtualCamera,对应的设置如下

  • Follow:不需要绑定
  • Body:选择Donothing
    将该相机放在轨道小车(Dolly Cart)下即可
    在这里插入图片描述
    Unity学习笔记 Cinemachine沿着轨道自动匀速移动_第6张图片

性能区别

理论上来说应该方法二性能上会比方法一好并且稳定一点,因为相机本身不用再去做AutoDolly里面的东西,但是经过测试(没有做很严谨的测试,也不是暴力测试),发现两者之间的性能都差不多,可能是因为用的设备能力有限(还是在HDRP的环境下)。
可能随着环境和程序的复杂度增加,他们之间的性能表现情况对比才能放大。


以上就是如何使用Cinemachine完成相机自动跟随路径自动移动

你可能感兴趣的:(unity,游戏引擎,3d)