Unity | 渡鸦避难所-4 | 镜头跟随角色移动

1 Cinemachine 简介

在第一人称视角的游戏中,摄像机需要时刻跟随角色移动。除了手动计算摄像机的位置、旋转外,也可以使用 Unity 提供的 Cinemachine 插件来轻松实现摄像机的控制

Cinemachine 是一套用于操作 Unity 相机的模块,解决了跟踪目标、合成、混合和镜头之间剪切的复杂数学和逻辑。它旨在显着减少开发过程中耗时的手动操作和脚本修改的数量。更多信息请参阅文档: 「https://docs.unity3d.com/Packages/com.unity.cinemachine@2.9/manual/index.html」

2 安装并创建虚拟相机

1 安装 Cinemachine

菜单栏中选择 Window > Package Manager,弹出窗口中的 Package 选择 Unity Registry,输入 Cinemachine 关键词,搜索并安装

2 创建虚拟相机对象

在 Hierarchy 中的任意地方右键,创建 Virtual Camera,如果在游戏对象上,路径为:GameObject > Cinemachine > Virtual Camera,如果是空白处,路径为:Cinemachine > Virtual Camera

3 镜头跟随

1 设置跟随目标

为了更好的控制角色,角色模型的锚点通常在脚底,而游戏中希望摄像机捕捉的位置是角色的头部。所以在 PlayerController 中创建一个对象,命名为 Head,调整位置到角色的头部。然后将其拖入到虚拟相机的 Follow 属性中,摄像机就会以阻尼运动的方式跟随 Head,且与目标保持固定距离

2 选择跟随算法

Body 属性指定在场景中移动虚拟摄像机的算法。关于不同算法的详细介绍,请参阅文档:「https://docs.unity3d.com/Packages/com.unity.cinemachine@2.6/manual/CinemachineVirtualCameraBody.html」

游戏中期望镜头像王者和原神一样,角色移动时,相机以固定的角度跟随角色,且与角色保持固定的距离

据此需求,选择 Framing Transposer,此虚拟相机机身算法将相机以固定的屏幕空间关系移动到跟随目标,还可以指定偏移、阻尼和合成规则。Framing Transposer 仅改变相机在空间中的位置,它不会重新定向或以其他方式瞄准相机

Framing Transposer 专为 2D 和正交相机而设计,但它也适用于透视相机和 3D 环境

该算法首先沿相机 Z 轴移动相机,直到跟随目标距相机 XY 平面达到所需距离。然后,它在 XY 平面上移动摄像机,直到跟随目标位于摄像机屏幕上的所需点

注意:Framing Transposer 会忽略 LookAt 目标,仅使用 Follow 目标

更多关于 Framing Transposer 的信息,请参阅文档: 「https://docs.unity3d.com/Packages/com.unity.cinemachine@2.9/manual/CinemachineBodyFramingTransposer.html」

选择 Framing Transposer 后,根据 Aim 属性的提示,将其选择为 Do nothing

3 调整跟随参数

选定虚拟相机的移动算法后,在对应的属性面板中调节相关参数,这里仅更改两个参数:

  • Tracked Object Offset:相对于跟踪对象的偏移

  • Camera Distance:沿相机轴与跟随目标保持的距离

在 Game 视图中可以即时看到调整后的效果,运行后,摄像机就可以时刻捕捉角色的头部位置

最近更新

  1. TCP协议是安全的吗?

    2023-12-28 22:22:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-28 22:22:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-28 22:22:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-28 22:22:04       20 阅读

热门阅读

  1. 脚本批量导入导出es表结构

    2023-12-28 22:22:04       38 阅读
  2. List的四种遍历方法

    2023-12-28 22:22:04       36 阅读
  3. 面向-对象的三大原则

    2023-12-28 22:22:04       38 阅读
  4. vue中使用lodash的debounce防抖函数

    2023-12-28 22:22:04       38 阅读
  5. Qt开发Charts折线图绑定事件

    2023-12-28 22:22:04       42 阅读
  6. Vue前后端跨域链接

    2023-12-28 22:22:04       40 阅读
  7. vue前端学习笔记

    2023-12-28 22:22:04       43 阅读
  8. 数据库(部分函数)

    2023-12-28 22:22:04       35 阅读
  9. LeetCode 2660. 保龄球游戏的获胜者:模拟

    2023-12-28 22:22:04       36 阅读
  10. docker学习笔记

    2023-12-28 22:22:04       38 阅读