Unity相机笔记

文章讲述了在使用Unity中第一人称相机时遇到的问题,包括跟随人物时位置异常、Lookat设置影响准星位置以及NearClippingPlane设置导致的渲染问题。提出了解决方案,如使用AimConstraint组件和调整Cinemachine设置。
摘要由CSDN通过智能技术生成

Cinemachine

Cinemachine检查器设置对应的脚本代码

判断相机是否live:

Class CinemachineBrain | Cinemachine | 2.9.7 (unity3d.com)

Priority

相机显示Priority最大的机位那两个机位优先级一样呢?经研究:

1.从停用变成激活的,且优先级是最大之一的会变成Live;

2.从较小的优先级变成最大之一会变成Live;

其他的官方也没说。

Setting Virtual Camera properties | Cinemachine | 2.9.7 (unity3d.com)

Body

Transposer

Lock To Target On Assign
Lock To Target With World Up

位置受Follow绕y轴旋转的影响,不受绕x轴、z轴旋转的影响。下图当头低下时,相机一直在头世界坐标前方一定的位置,没有随低头下移,结果就是相对头上移了。

Lock To Target No Roll

位置受Follow绕x轴、y轴旋转的影响,不受绕z轴旋转的影响。但是所以这个功能也不能完全防抖。(下图相机的y轴是对准WorldUp的,看起来歪是因为站在斜坡上)

Lock To Target

位置受Follow绕x轴、y轴、z轴旋转的影响。Follow绕z轴旋转时相机保持y轴和Follow一致。

World Space

Follow的世界位置加上Follow Offset。

3rd person Follow

这种模式下改变相机的旋转不会影响相机视野的旋转。相机朝向的不是z轴。

第一人称相机配置

z坐标和Near Clip Plane

首先z坐标和Near Clip Plane应该保证相机渲染不到人物的头,要么相机靠前,Near Clip Plane靠后;要么相机靠后,Near Clip Plane靠前。

相机靠前,Near Clip Plane靠后的问题

枪露出来的少。吃鸡的枪露出来的比其他纯FPS少可能也是这个原因。

相机靠后,Near Clip Plane靠前的问题

会导致Near Clip Plane切到枪的某些部分,枪渲染不完整。这是因为Near Clip Plane更大了,从第一个图里能看到,人物额头的头发和枪的提把尾端在一个前后位置上,如果Near Clip Plane大一点,就不可能同时在头发前面又在提把后面。

Near Clip Plane靠前一点,枪渲染完整了,人物的头也开始出来了。

有完整人物模型的射击游戏,第一人称相机的配置面临以下几个问题:

1.人物有头,相机不能太靠后,否则进入人的头里;

2.跑步时人物的头有晃动,第一人称相机挂载在头上也会跟着晃,体验很不好。第一人称相机需要防抖;

需要解决的问题有:

1.相机是谁的子物体;

2.相机需要加什么约束,PositionConstraint、RotationConstraint还是VirtualCamera的Follow和LookAt;

Follow人物的head,LookAt目标物:

位置如图所示:

相机效果:

此时相机相对于head的Transform:

遇到的问题

人物移动时相机的位置出现问题:

相机的Transform:Position没变,Rotation变化了

转向后恢复:

在scene窗口看,相机异常的时候:

转向后相机正常:

每次移动后相机的Rotation变成的值不一样:

Follow None,做Head的子节点,Look at目标物

结果:问题不变

Follow None,做Head的子节点,Look At None

移动后位置不会异常了,但是移动时准星不在画面中心:

说明原因就是Look at设置的问题。

一个解决方法:

人物的Head上挂载Aim Constraint组件,设置z轴正方向指向准星,相机作为Head的子节点,Follow和Look at都设置None。

结论:第一人称相机就设置成头的子物体,Follow和LookAt都不设置,效果最好。

第三人称相机配置

功能需求:

1.人物俯仰时相机始终在人物上半身后面,就是说人物仰视时相机会转到靠下的位置,俯视同理;

2.人物站、蹲、趴时相机跟随改变高度,使人物身体始终在相机里;

3.人物做一些动作(如跑步)晃动时,应该看见人物身体的晃动,而不是身体在画面里静止,世界晃动;

Builtin-RP和URP项目相机的区别

Builtin-RP相机的检查器:

URP项目相机的检查器:

区别是很大的。相同的选项有Projection(透视还是正交)、FOV、FOV Axis、Clipping Plane、Culling Mask(被转移了位置)、Target Texture(如果有就输出到贴图不输出到Display)、Target Display等。(只写了我理解的)

Builtin RP相机特有的选项有:Clear Flags(画面没有物体的部分填充什么。URP相机里有Background types和这个类似,但是选项不一样)、Depth(渲染顺序,越小越靠前)

URP相机特有的选项有:Rendering里的一大堆、Stack。

需要从一个列表里选一个Renderer:

Renderer列表来自一个叫Universal Render Pipeline Asset的asset:这是一个Renderer总表文件。

每个Renderer由一个Universal Renderer Data文件记录:

问题合集

Scene视图里相机看到了模型内部

原因:使用滑轮缩小太多了。滑轮缩小好像会把Scene相机的Near Clip Plane调远。

解决方法:向前滑滑轮放大。相机进退时按住右键按w、s,别用滑轮。

Cinemachine第一人称相机Virtual Camera激活时跑到Cinemachine Brain的位置

已知哪个Virtual Camera选了solo或priority最大时就是Live,Cinemachine Barin就到它的位置。但是第一人称相机由于Priority变成Live时,是它跑到Cinemachine Brain的位置,点solo时是Cinemachine Brain跑到它的位置。

切瞄准相机的瞬间看到人物的脑后或者头内部

Default Blend时长选比较短或者选Cut有这个问题

如果把Blend时长改的特别长0.7s以上,就没有这个问题,但是开瞄准又不能太慢。

2024.8.24今天发现发瞄准相机的Standby Update改成Never能解决问题。

做了几组实验:

瞄准相机StandBy UpdateNoneRound RobinAlways
没问题偶发每次切都有问题

内部原理不懂。官方文档就这一句话。

第三人称相机的需要随人物站、蹲、趴变化高度

方案1:Follow人物根节点,LookAt目标物,Body选3rd Person Follow,Aim选Composer,通过代码改变Shoulder Offset

问题:相机位置会突变,游戏体验不好。

一个解决方法:给TPP相机挂Animator,通过动画改变Shoulder Offset。

方案2:Follow人物Head,LookAt目标物,Body选3rd Person Follow,Aim选Composer,靠人物改变高度时头部高度改变带动相机高度改变

问题:取决于头有没有约束,如果有,画面是稳定的,但是头在画面里完全静止,很僵硬;如果没有,相机就随头一起晃。

方案3:设置三个TPP相机,分别放在人物站、蹲、趴合适的位置,人物改变高度时改相机的优先级

不用想,代码巨麻烦。我根本不想用。

总之,我需要的是在身体晃的时候不晃,在蹲下趴下的时候又自动跟随调整高度的第三人称相机。

当初我学习Unity系统的时候,我做了一些笔记,希望能帮到你入门。下面是一些关键点: 1. Unity是一个跨平台的游戏开发引擎,可用于开发2D和3D游戏。它提供了一个可视化的编辑器,让你可以轻松地创建场景、对象、材质等。 2. 编辑器界面:Unity的编辑器界面分为场景视图、层次视图、资源视图和检视视图等。场景视图用于查看和编辑场景,层次视图显示场景中的对象层次结构,资源视图用于管理项目中的资源,检视视图则显示了当前选中对象的属性和组件。 3. 游戏对象:Unity中的一切都是游戏对象,包括角色、道具、相机等。每个游戏对象都可以附加多个组件,比如渲染器、碰撞器、脚本等,用来实现不同的功能和行为。 4. 脚本编程:Unity使用C#作为主要的编程语言。你可以编写脚本来控制游戏对象的行为。脚本可以挂载到游戏对象上,通过组件来访问和修改游戏对象的属性和方法。 5. 场景管理:通过场景管理器可以创建、编辑和切换不同的场景。你可以在场景中添加、移动、旋转和缩放游戏对象,设置摄像机视角,调整光照效果等。 6. 资源管理:Unity提供了资源视图来管理项目中的资源,包括纹理、音频、模型等。你可以导入和导出资源,并在项目中进行引用和使用。 7. 物理引擎:Unity内置了物理引擎,可以模拟物体的运动和碰撞。你可以给游戏对象添加刚体组件,设置质量、重力、碰撞检测等属性,实现真实的物理效果。 8. 动画系统:Unity提供了强大的动画系统,可以创建和编辑角色的动画。你可以通过动画控制器来管理不同的动画状态,并通过脚本控制角色的动画播放和过渡。 这些仅是入门的基本知识点,希望对你有所帮助。如果你还有其他问题,可以继续提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值