Unity Cinemachine之第三人称摄像机CinemachineFreeLook属性详解
演示
CinemachineFreeLook是一个第三人称视角相机插件,功能非常强大,内置了很多属性可以供开发者根据需求进行调整。
创建
首先是Cinemachine插件的导入,如果是2018以后的Unity版本,应该 可以直接从Unity顶部菜单的Windows>Package Manager点击弹出后窗口的右侧输入Cinemachine,然后选择install,导入完成后顶部菜单会出现一个Cinemachine,点击弹出选项框然后再点击Create FreeLook Camera。
创建完成后场景内会出现一个CM FreeLook1的物体,Main Camera物体后也出现了一个图标,可以看到Main Camera身上多了一个CinemachineBrain组件。回到CM FreeLook1,点击该物体可看到挂载了一个CinemachineFreeLook的组件,下面开始介绍该组件的属性。
基础部分
- Status:Live:作用未知,推测与多个虚拟摄像机的切换有关
- Game Window Guides:启动后点击虚拟摄像机,Game视图会出现由红色和蓝色方块组成的框,可自行拖动线条来调节下文中的Rig参数
- Save During Play:可在游戏运行时修改并保存参数
- Priority:优先度,推测与多个虚拟摄像机的切换有关
- Follow:跟随的目标
- Look At:朝向的目标,将两个参数设置为当前需要控制的对象即可完成基础的第三人称摄像机功能
- Standby Update:当摄像机未被启用时,该摄像机的更新频率
- Command Lends:公共长度,勾选取消勾选后,下方的Lens属性会出现在下文的Orbits部分
Lens:
- Field Of View:视野范围,视野会根据数值变大
- Near Clip Plane:近裁剪平面,摄像机最近的渲染位置
- Far Clip Plane:远裁剪平面,摄像机最远的渲染位置,摄像机会渲染处于近裁剪平面与远裁剪平面之间的物体
- Dutch:摄像机Z轴的旋转角度
Transitions:作用未知
Axis Control部分
这部分定义了相机运动信息的输入
Y Axis:
- Value:摄像机Y轴的值,范围为0到1
- Max Speed:Y轴移动的最大速度
- Accel Time:加速时间,以秒为单位,在最大速度下加速到输入值所需的时间
- Decel Time:减速时间,当前玩家结束输入时,该摄像机的Y轴会在到达减速时间后停止移动
- Input Axis Name:默认为鼠标输入的Axis,可修改成Unity顶部菜单下Edit>Project Setting>Input
Manager>Axis下的任意一个Axis,也可置空,此时摄像机的控制只能通过代码来实现 - Input Axis Value:该Axis输入的值,当玩家停止输入后该值会变回0,用代码控制的话修改该值即可
- Invert:反转输入的方向
Y Axis Recentering:
Enable:启动后当摄像机的Y轴不在中心点时,会自动通过插值恢复到该轴的中心点(即Y轴的Value最大值为1,恢复到0.5的位置)
Wait Time:当前的Axis无输入信息持续多长时间后,开始重定位
Recentering Time:恢复到中心点所需的时间
X Axis:同上Y Axis
Orbits部分
Binding Mode:绑定模式,具体看下图(引用自【Cinemachine智能相机教程】VirtualCamera(二):Body属性)
Spline curvature:摄像机y轴的轨道,也就是连接3个红圈(官方称为Rig)的曲线的曲率,数值在0到1之间,数值越大曲率越高,效果见图
TopRig:摄像机最顶部的圈,Height是调整高度,Radius是圈的半径, 这两个属性在Scene视图内展示挺直观的,就不详细说明了
MiddleRig:摄像机中间的圈,属性同上
BottomRig:摄像机下方的圈,属性同上
另外说明一下如果需要通过代码来修改这几个Rig的两个属性的值,则可以这样写;TopRig对应的是m_Orbits[0],MiddleRig对应的是m_Orbits[1],BottomRig对应的就是m_Orbits[2]了。
cinemachineFreeLook.m_Orbits[0].m_Height = 3f;
Rig部分
- Look At Override:当摄像机处于当前Rig时,对于摄像机朝向的重新定义(覆盖)
这几个属性的具体用途就引用一下大智老师的这几篇文章,写得非常详细:
- Body:【Cinemachine智能相机教程】VirtualCamera(二):Body属性
- Aim: 【Cinemachine智能相机教程】VirtualCamera(三):Aim属性
- Noise:【Cinemachine智能相机教程】VirtualCamera(四):Noise属性
如果想通过代码来修改Rig里的属性,可以根据Body或者Aim所对应的枚举值(Noise没试过 )来获取一个组件,组件名为:Cinemachine+枚举值,比如当前Aim的枚举是Composer,则获取CinemachineComposer组件,如果需要修改TopRig下方Screen X的值就可以这样写:
cinemachineFreeLook.GetRig(0).GetCinemachineComponent<CinemachineComposer>().m_ScreenX = 0.8f;
最后补充一点,Aim的默认方式是Composer,但是在不修改任何属性的情况下摄像机的中心是角色两脚中心的位置,而这并不符合常理,所以这时候就要修改Tracked Object Offset属性:
修改前:TopRig、MiddleRig与BottomRig的Tracked Object Offset皆为(0,0,0)
修改后:此时TopRig的Tracked Object Offset为(0,1.5,0),MidedleRig与BottomRig的Tracked Object Offset皆为(0,1,0),各位可根据项目需求来进行适量调整
Extensions:
这里则是一些拓展功能了,本人只用过Cinemachine Collider,就简单介绍一下吧。这个拓展插件是给摄像机添加一个Collider,当摄像机与其他带有Collider的物体发生碰撞时,摄像机会进行相应的移动来确保依然对准Target,详细属性介绍的话就引用一下这篇文章:利用Cinemachine实现相机不穿墙效果
演示:
Unity Cinemachine之第三人称摄像机CinemachineFreeLook属性详解相关推荐
- Cinemachine API 第三人称跟随案例与参数调节
Cinemachine API 这几天简单研究了一下 Cinemachine Free Look,在网上看了不少相关文章,但是关于通过脚本使用 Free Look 的参考所见不多.因此,通过整理学习, ...
- Unity 第三人称 摄像机
今天主要是简单的模拟下吃鸡游戏的第三人称摄像机的实现. 观察 我们玩过吃鸡手游的都知道,吃鸡的人物跟随的摄像机有两种状态 1. 滑动屏幕的时候,摄像机左右上下移动,人物也会跟随着左右移动,上下抬头低头 ...
- Unity 之 打包参数 -- Player面板属性详解
Unity 之 Project Setting -- Player 面板属性详解 前言 一,Player 1.1 属性说明 1.2 效果展示 二,ICON(图标) 2.1 属性说明 2.2 使用示例 ...
- HTML中元素的position属性详解
HTML中元素的position属性详解 转载自:https://blog.csdn.net/wangzunkuan/article/details/81540935 HTML中DOM元素有5种定位属 ...
- Unity 之 UGUI Dropdown下拉选单组件详解
Unity 之 UGUI Dropdown下拉选单组件详解 1,属性面板 1), Dropdown的组成 2,代码操作 3,使用实例 1), 控制菜单展开方向 4,相关扩展 1), Lua中动态添加O ...
- Response的Header属性详解
版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者. https://blog.csdn.net/weixin_43453386/article/detai ...
- Three.js - 摄像机的使用详解(透视投影摄像机、正交投影摄像机)
一.两种摄像机的区别与比较 Three.js 库提供了两种不同的摄像机:透视投影摄像机和正交投影摄像机. 透视投影摄像机:这种摄像机的效果更贴近真实世界.也就是物体离摄像机越远,它们就会被渲染得越小. ...
- 弹性盒子(flexbox)布局属性详解
弹性盒子布局属性详解 1 弹性盒子概述 2 基本概念 3 常用属性 3.1 布局方向flex-direction 3.2 环绕效果flex-wrap 3.3 水平对齐方式justify-content ...
- 【input 标签的 type 属性详解】
input 标签的 type 属性详解 1. input 输入标签的 type 属性 1.1 input 标签的 type类型 属性的常用属性值 ⑴ 单行文本框: type="text&qu ...
最新文章
- python简单代码input-Python简单程序的练习
- 微博面试Java,微博java开发工程师面试题整理
- java 求交集 算法_Java计算交集,差集,并集的方法示例
- 请简要说明一下CyclicBarrier和CountDownLatch的区别?
- 提升领导力 六商是基础
- Python爬取天气数据及可视化分析!
- 【idea基础知识】常用快捷键整理
- 我安装java了_我安装了JAVA为什么.......
- [luogu1880] [NOI1995]石子合并
- net MongoDB安装
- OpenCV下的图片旋转(转)
- c语言程序设计卡特兰数问题,求解圆上2N个点的连线问题(卡特兰数)
- iptables如何删除一条规则
- Error running' xxxxxx': Command line is too long. Shorten command line for xxxxxxxxx
- pmp考试【5】emv期望货币价值计算
- HDU2058 The sum problem(数学问题)
- 编码规范重要性_沟通比您的编码技能更重要
- Win10安装cuda、cudnn检测是否安装成功
- 天文学 python_4个天文学入门Python工具
- 美术改画系列-张聪-专题视频课程