找回密码
 立即注册
查看: 655|回复: 2

Cinemachine教程 | Unity中如何制作路径动画?

[复制链接]
发表于 2021-2-18 09:11 | 显示全部楼层 |阅读模式
摘要:在Unity中制作路径动画是有挺多方式的,基于Cinemachine的Dolly Path是一个简单便捷的方法,咱们来快速的学习一下吧!
洪流学堂,让你快人几步。你好,我是跟着大智学Unity的萌新,我叫小新,这是我本周的学习总结报告哦。


dolly.gif
制作路径动画在Unity中是100%会遇到的一个需求。方式也有很多,列举几种:
1、通过Animation制作动画(优点:简单;缺点:不直观,无法直观看到路径中间的插值位置,灵活性差)
2、通过Tween插件(优点:灵活性高,可通过代码运行时修改路径点;缺点:有一定学习成本,可视化插件需付费,如Dotween Pro)
3、通过代码手撸一个路径动画(优点:灵活性高,最适配自己项目的需求;缺点:难度较高)
4、通过Cinemachine的Dolly Track(优点:Unity官方插件,版本适配好,功能够用;缺点:灵活性稍差)
最近咱们一直在学习Cinemachine,当然这篇理所当然应该尝试下Cinemachine的Dolly Path。Let‘s go!
使用Dolly Path(滑轨路径)

路径动画有两个部分:如何创建路径以及如何使用这个路径
创建Dolly Path

Cinemachine中有两种Dolly Path组件:
    CinemachinePath组件:每个路径点都可以设置位置、切线和翻转角度,可以最大程度控制路径。但是如果切线设置的不合理,相机在路径上运动时可能会有不稳定的现象。CinemachineSmoothPath组件:每个路径点都可以设置位置和翻转角度。组件中会使用Bezier算法来推算路径点之间的位置。虽然SmoothPath不能完全控制路径,但是整个路径会更平滑和连续。推荐优先使用
如何创建Dolly Path呢?

方法一:如果是在相机上制作路径动画,可以直接创建Dolly Camera。菜单栏Cinemachine > Create Dolly Camera with Track。点击后会创建一个虚拟相机和dolly path。这个Path默认是SmoothPath。虚拟相机会自动设置好Body属性为Dolly Track并且Path属性赋值为创建出来的Dolly path。
方法二:如果是给GameObject制作路径动画,可以直接创建Dolly Cart。菜单栏Cinemachine > Create Dolly Track With Cart。点击后会创建一个虚拟相机和DollyCart。这个Path默认是SmoothPath。只需要把做路径动画的物体作为Cart的子物体即可。
方法三:直接创建Dolly Path。创建一个空物体,给空物体添加CinemachinePath或CinemachineSmoothPath组件。
如何编辑路径点呢?

1、在Hierarchy中选中Path物体。这时候能在Scene中看到整个路径以及上面的路径点(小白球)。
2、可以在Inspector上的路径点列表右下角点击加号+添加路径点。
3、可以点击场景中的小白球或者Inspector上路径点前面的序号按钮选中一个路径点。
4、选中路径点时,场景中路径点上会有移动工具,可以用来可视化移动。此外还可以在Inspector上直接修改数值。




CinemachinePath组件

CinemachinePath中定义了一系列的路径点,定义在世界空间中。每个路径点都有位置、切线和翻滚角度。在路径点之间使用贝塞尔曲线插值,来获得平滑、连续的路径。
提示:尽管路径位置始终是平滑连续的,但沿路径设置动画时仍然可能会产生不稳定的现象。当设置的切线没有保证一阶和二阶导数的连续性时,就会发生这种情况。手动做到这一点并不容易,为避免这种潜在的不稳定现象,尽量使用CinemachineSmoothPath。CinemachineSmoothPath自动设置切线以确保完全平滑。
属性详解
Resolution 每个路径点之间采样的次数。Cinemachine在计算路径距离时使用此值来限制粒度。场景视图中路径Gizmo上的交叉线反映了该值。




Appearance 路径在场景中显示的外观。只在编辑器中生效。
    Path Color 选中路径时的颜色。Inactive Path Color 未选中路径的颜色。Width 路径轨道的宽度。
Looped 选中后,路径会首尾相连。
Path Length 整个路径长度,这个数据是只读的,根据所有路径点计算出来的。
Selected Waypoint 当前选中的路径点的信息。
Prefer Tangent Drag 当切线和位置的Gizmos在Scene视图中重合时,选中该选项将Gizmo用来调节路径点的切线。



正常情况下CinemachinePath选中路径点时有两个Gizmo
Waypoints 定义路径点的列表。
    Position 位置,在路径局部空间中的位置(即相对于路径GameObject本身的变换)Tangent 切线,定义了路径点上曲线的切线。切线的长度代表了贝塞尔的强度。Path路径点两边默认使用对称的切线以确保平滑。Roll* 翻转角度。朝向的其他轴方向是从切线和世界的向上向量推断出来的。
CinemachineSmoothPath组件

与Cinemachine Path不同,CinemachineSmoothPath组件保证了一阶和二阶连续性,这意味着沿路径动画的对象不仅位置而且角速度也将是平滑且连续的。
属性详解
Resolution 每个路径点之间采样的次数。Cinemachine在计算路径距离时使用此值来限制粒度。场景视图中路径Gizmo上的交叉线反映了该值。




Appearance 路径在场景中显示的外观。只在编辑器中生效。
    Path Color 选中路径时的颜色。Inactive Path Color 未选中路径的颜色。Width 路径轨道的宽度。
Looped 选中后,路径会首尾相连。
Path Length 整个路径长度,这个数据是只读的,根据所有路径点计算出来的。
Waypoints 定义路径点的列表。
    Position 位置,在路径局部空间中的位置(即相对于路径GameObject本身的变换)Roll* 翻转角度。朝向的其他轴方向是从切线和世界的向上向量推断出来的。
如何使用这个路径

滑轨路径(Dolly Path)是场景中的路径点数组形成的一条路径。
使用滑轨路径分为相机路径动画和其他物体路径动画:
    相机路径动画建议使用Cinemachine中的VirtualCamera,然后ref="https://mp.weixin.qq.com/s?__biz=MjM5Mzg2Nzg2MQ==&mid=2456961795&idx=1&sn=6aefc3d506572248e84e675af0476448&chksm=b116923986611b2ff6fd0b9aa72eece0ee7eb66dbd435b98e677c8e15e9958397f94bd711fe0&token=1108897709&lang=zh_CN#rd">Body的算法设置为Tracked Dolly,然后将其中的Path属性设置为编辑好的Path。其他GameObject的路径动画可以使用Cinemachine中的Dolly Cart组件。




CinemachineDollyCart组件制作路径动画

Cinemachine Dolly Cart翻译过来是滑轨小车。相当于把一个物体放在小车里,然后在轨道上移动。这个组件就是把当前所附着的GameObject沿着path移动。




可以直接从菜单栏创建Cinemachine > Create Dolly Track With Cart,这会创建出来一个CinemachineSmoothPath和CinemachineDollyCart。也可以直接给GameObject添加CinemachineDollyCart组件。
属性详解
Path 路径对象
Update method 更新的方法。
    Update 正常更新Fixed Update 与物理更新同步Late Update 通常用于相机的更新
Position Unit 位置的单位
    Path Units 使用路径点的序号。比如0代表第一个路径点,1代表第二个路径点。Distance 使用路径的总长度。Normalized 归一化。0代表路径最开始的位置,1代表路径结束的位置。
Speed 移动小车的速度。基于Position Unit设置的单位。如果速度不为0,则小车会根据速度自动移动。
Position 当前小车所处的位置。基于Position Unit设置的单位。
扩展阅读

    【Cinemachine智能相机教程】VirtualCamera(四):Noise属性【Cinemachine智能相机教程】VirtualCamera(三):Aim属性【Cinemachine智能相机教程】VirtualCamera(二):Body属性【Cinemachine】VirtualCamera虚拟相机详解(一)5分钟入门Cinemachine智能相机系统Unity编辑器录屏神器:Unity Recorder5分钟制作过场动画【建议收藏】找不到免费的角色动画?来试试mixamo
【扩展学习】洪流学堂公众号回复timeline可以下载Timeline&Cinemachine系列教程全文带目录PDF哦,更有本文的视频教程等着你!
呼~ 今天小新絮絮叨叨的真是够够的了。没讲清楚的地方欢迎评论,咱们一起探索。
我是大智,你的技术探路者,下次见!
别走!点赞收藏哦!
好,你可以走了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-2-18 09:16 | 显示全部楼层
这可以制作那种回合制战斗动画吗
发表于 2021-2-18 09:22 | 显示全部楼层
这里有问题,用timeline制作推轨相机的动画,在录制过程中指定给look at的注视目标,下次再打开场景的时候全都丢失了,不知道为什么
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-23 19:26 , Processed in 0.093884 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表