美文网首页Unity游戏开发学习记录
Unity练习2 - 《John Lemon's Haunted

Unity练习2 - 《John Lemon's Haunted

作者: 我阿郑 | 来源:发表于2023-12-23 10:08 被阅读0次

    ✅ 摄像机

    教程地址

    在本教程中,您将:

    • 探索 Unity 中的 Camera 组件
    • 使用 Cinemachine 设置虚拟摄像机
    • 添加一系列不同的后期处理效果

    学完本教程后,您将设置您的摄像机,使游戏在视觉上尽可能吸引玩家。

    image.png

    有几种选择可确保【摄像机跟随玩家角色】。一种解决方案是为此编写一段脚本。但是,Unity 具有针对该问题的【内置解决方案:Cinemachine】。

    ➡️ Cinemachine 的工作原理

    Cinemachine 是 Unity 针对游戏中与摄像机有关的所有问题的解决方案。该系统简单总结如下:

    • 在场景中创建一个或多个“虚拟”摄像机。
    • 这些虚拟摄像机由一个名为 Cinemachine Brain 的组件进行管理。
    • Cinemachine BrainCamera 组件连接到相同的游戏对象,默认情况下,这个游戏对象将是 Main Camera
    • Cinemachine Brain 管理所有虚拟摄像机,并确定实际摄像机应跟随哪个虚拟摄像机(或虚拟摄像机的组合)。

    本游戏中,摄像机只会跟随 JohnLemon,因此您只需要一个虚拟摄像机。您将确保此虚拟摄像机跟随 JohnLemon,然后 Main Camera 会【连接到】这个虚拟摄像机。

    ➡️ 使用 Cinemachine 设置虚拟摄像机

    首先,选择 JohnLemon 游戏对象。

    然后,顶部菜单选择 GameObject | Cinemachine | Virtual Camera ,创建一个虚拟相机命名为 CM vcam1

    image.png

    接着就会在 JohnLemon 的上面创建了一个虚拟相机:

    image.png

    ➡️ 更改 Cinemachine Virtual Camera 组件设置

    该组件有很多设置,但是现在您只需要关注三个部分:目标引用、Body 和 Aim

    目标引用部分有两项设置:FollowLook At。这些可选设置是对游戏对象的 Transform 组件的引用。

    image.png

    如果要移动虚拟摄像机,虚拟摄像机需要知道如何移动。具体来说,虚拟摄像机需要引用要跟随的 Transform 组件。该游戏中虚拟相机跟随 JohnLemon,所以需要引用JohnLemon 的 Transform。将JohnLemon拖拽到 Follow那里,就完成了虚拟相机对 JohnLemon 的 Transform的引用。同样,如果想【旋转虚拟摄像机】,虚拟摄像机需要知道自己必须经过旋转才能观看的目标。

    Body 和 Aim 这些设置分别用于控制【摄像机 Main Camera ?】如何移动和旋转。

    • 在 Aim 中,将 Composer 更改为 Do Nothing。
    • 在 Body 中,将 Transposer 更改为 Framing Transposer。这样可以为虚拟摄像机提供关于其 Follow 目标必须在屏幕上所处位置的规则,从而控制【虚拟摄像机】的位置。
    image.png

    展开Body的内容,在Game 窗口上应该有若干红色和蓝色框。这些是目标可以在屏幕上出现的位置的参考线框:

    image.png

    选择 CM vam1 游戏对象, 将围绕 x 轴的 Rotation 设为 45。

    image.png

    现在,虚拟摄像机向下倾斜并正在从上往下观看角色。这大致就是您需要的视角。当您仅更改旋转时,为什么虚拟摄像机会移动?这就是 Cinemachine 的功能!

    Framing Transposer 的大多数默认设置都适合您的游戏。唯一需要更改的是 Camera Distance 设置;角色在屏幕上有点太小,需要将虚拟摄像机移近一点,将 Camera Distance 设置从 10 更改为 8。

    保存场景, 运行,虚拟相机就可以跟随人物了。

    ✅ 添加后期处理效果

    【后期处理】涉及在游戏图像渲染到屏幕上之前对其应用滤镜和效果(类似于可以添加到照片的滤镜)。

    ➡️ 后期处理在 Unity 中的【工作原理】

    通常,后期处理效果会组合在一起,并用于游戏世界的不同区域。这意味着,当摄像机位于特定区域时,其指定的一组处理将应用于图像

    想象一下,您位于黑暗的房间中,然后穿过一扇门进入室外明亮的日光之中。您的眼睛需要花些时间进行调整适应,并且在您离开房间时一切看起来都会比平常明亮许多。 在 Unity 中,可以通过在房间内和房间外应用不同的后期处理效果组来模拟这种情况。

    后期处理效果组是称为后期处理配置文件 (Post-processing Profiles) 的【资源】。
    分配了配置文件的游戏世界区域是称为后期处理体积 (Post Process Volumes)的【组件】。

    有时,不同的摄像机具有不同的后期处理。为了将一个处理效果组链接到特定摄影机,需要将 Post Process Layer 组件添加到与 Camera 组件相同的游戏对象。层 (Layer) 是一种按行为组织游戏对象的方法。

    本教程包含了在 Unity Editor 中添加特定后期处理效果的分步式说明。如果想进一步详细了解这些效果,可在以下位置找到更多信息:

    ➡️ 创建后期处理层 (Post-Processing Layer)

    选择 Main Camera 节点,在 Inspector 中找到它下面的 Layer 属性。

    • 一个游戏对象只能属于一层。不能同时属于多个层。
    • Main Camera 位于默认层 (Default Layer) 上。我们可以通过 Add Layer 创建自己的层。
    image.png

    点 Add Layer 之后,打开 Tags & Layers Manager ,其中有 32 个可用的层(以 0 开头,以 31 结尾)。

    image.png

    前8个层保留用于 Unity 的默认层,而其余的 24 个层则可用于任何所需的层。由于您需要一个用于后期处理体积 (Post Process Volume) 的层。因此创建一个层: 添加“PostProcessingVolumes”作为 User Layer 8:

    image.png

    接着,为 Main Camera 添加 【Post Process Layer 组件】, 将 Layer 属性从 Nothing 更改为 PostProcessingVolumes

    ✅ 通过抗锯齿 (Anti-aliasing) 改善图像质量

    快速了解一下【抗锯齿】。

    【锯齿】是指对象的边缘看起来呈锯齿状并可以看到像素轮廓:

    image.png

    抗锯齿是一种后期处理效果,会使用中间色调的像素将这些锯齿状线条包围起来,从而可以降低锯齿明显程度。有几种不同的算法可以计算出需要调整哪些像素以及调整多少,然后您将使用最简单、最有效的一种。

    确保 Game 视图可见,以便您可以看到本教程的这一部分中所做的更改。

    image.png
    • 在 Post Process Layer 组件中,将 Mode 属性下拉选单从 No Anti-aliasing 更改为 Fast Approximate Anti-aliasing (FXAA)

    • 选中 Fast Mode 复选框。

    正确设置 Post Process Layer 后,接下来您可以继续创建体积。

    ✅ 创建后期处理体积 (Post-Processing Volume)

    • 在 Hierarchy 窗口 Create > Create Empty,命名为“GlobalPost”
    • 在 Inspector 中,将 Layer 设置为 PostProcessingVolumes
    • 将 Transform 组件的 Position 设为 (0, 0, 0)
    • 为 GlobalPost 添加 Post Process Volume 组件
    • 启用 Is Global 复选框
    image.png
    • 单击 Profile 属性最右边的 New 按钮 ,将创建新的后期处理配置文件。
    image.png

    该配置文件保存在 Assets > Scenes > SampleScene_Profiles 下面:

    image.png

    该游戏对象(GlobalPost)将成为您的【全局后期处理体积】。全局体积将作为受影响的摄像机的默认配置文件。

    ✅ 添加颜色分级 (Color Grading) 效果

    ➡️ 单击 Add effect... 按钮并选择 Unity > Color Grading。

    【颜色分级】用于更改被渲染视图的亮度、对比度和颜色。该功能类似于在照片编辑软件或 Instagram 中应用滤镜。为了让您的游戏看起来更加诡异,您将调整被渲染视图的颜色和亮度级别。

    image.png

    注意:该组件中的设置是配置文件资源的快捷方式;对 Overrides 细分部分进行的所有更改都将更改配置文件资源,并且不会直接影响该组件。

    image.png

    ➡️ 首先,需要对场景进行【色调映射 (Tonemap)】。色调映射会更改最终渲染帧的输出,以便更轻松地控制光源和阴影

    image.png
    • 启用 Tonemapping 细分部分中的 Mode 复选框,从 None 更改为 ACES。
    image.png

    ACES 色调映射是应用色调映射的行业标准方法。这种色调映射有助于为您的项目创建更具电影质感的外观效果

    您会注意到场景现在看起来真的很暗。这是因为 ACES 的默认曝光为零

    ➡️ 解决此问题的一种好方法是使用 Post-exposure 功能。Post-exposure 是一种【调整默认曝光】的方法。

    image.png
    • 启用 Post-exposure (EV) 复选框。将值设置为 1 可以恢复场景的光亮。
    image.png

    ➡️ 还可以通过更改一些颜色来使场景更加诡异。在 Color Grading 部分的中间位置,找到名为 Trackballs 的色环。

    • 启用每个轨迹球 (Trackball) 下的 Lift、Gamma 和 Gain 复选框。
    image.png
    Lift 会影响`阴影`的颜色
    Gain 会更改`最亮`的高光
    Gamma 涵盖图像颜色中间(或中间范围)的所有内容
    
    • 拖动 (Trackballs) 中心的圆圈以略微调整 Game 视图中的颜色。拖动:
    image.png

    将 Lift 和 Gamma 轨迹球略微拖向蓝色
    将 Gain 轨迹球略微拖向黄色
    这样将会【增加阴影的深度】并【增加光照的温暖度】。

    image.png

    ✅ 添加泛光 (Bloom) 效果

    您的光源非常有效,但看起来还不像真实的光源。添加泛光 (Bloom) 效果可以使光源具有良好的发光效果:

    • 单击 Add effect... 按钮并选择 Unity > Bloom
    • All 快捷启用 Bloom 的所有设置
    • 由于 Intensity 的值不够高,目前实际上没有任何发光。设为 2.5,使光源发出漂亮的明亮光芒。
    • 将 Threshold 设置为 0.75 可向场景添加更强的发光。
    image.png

    ✅ 添加环境光遮挡 (Ambient Occlusion) 效果

    现在的光源感觉很明亮,但是对于这里的鬼屋来说,保持幽灵般的气氛很重要。

    一种使一些角落和裂缝变暗的好方法是使用环境光遮挡 (Ambient Occlusion) 效果。环境光遮挡使光线未到达的较局促角落变暗,由此模仿这些区域的现实效果。

    要添加这种效果,请执行以下操作:

    • 单击 Add effect... 按钮并选择 Unity > Ambient Occlusion。
    • All 快捷启用所有设置
    • Intensity 设为 0.5,便可在房间的角落创建漂亮的诡异阴影
    • 使用 Thickness Modifier 在整个房间中进一步散步这种效果,设为 3.5。
    image.png

    现在,您应该可以看到场景中其他一些道具后面散布着巨大的阴影效果。

    image.png

    ✅ 添加渐晕 (Vignette) 效果

    有几种效果可以模拟真实的摄像机如何观看场景。最后几种效果将改变这种摄像机镜头的工作方式。首先,您要添加渐晕效果以使摄像机镜头本身的边缘变暗。这有助于专注于玩家并使游戏感觉更幽闭恐怖。

    • 单击 Add effect... 按钮并选择 Unity > Vignette
    • All 快捷启用所有设置
    • Intensity 设为 0.5,该属性将决定这种效果在屏幕上散布的距离。
    • 增加 Smoothing 值来使氛围感觉更幽闭恐怖,Smoothness 属性决定了这种效果朝着屏幕中心淡入淡出的距离。设为 0.3。
    image.png

    ✅ 添加镜头失真 (Lens Distortion) 效果

    最后需要添加的效果是镜头失真效果。这种效果将扭曲最终渲染的帧,并有助于让人感觉像是正在通过【间谍相机】观看游戏。

    • 单击 Add effect... 按钮并选择 Unity > Lens Distortion
    • All 快捷启用所有设置
    • Intensity 设为 35

    使用这种效果时,有时可能会在图像发生变形的屏幕边缘产生视觉干扰。要修复此问题,只需将渲染的帧稍微放大一点以消除视图中的干扰。

    • 将 Scale 设为 1.1 即可修复此问题
    image.png

    ✅ 完成了所有的【后期处理】

    保存您的场景。到这里就完成了所有的后期处理!

    后期处理这一节教程中,您处理了游戏的大量视觉效果,不仅涉及摄像机的移动方式,而且还更改了视觉效果,从而使游戏看起来非常专业。请查看由此产生的视觉差异:

    之前:

    image.png

    之后:

    image.png

    相关文章

      网友评论

        本文标题:Unity练习2 - 《John Lemon's Haunted

        本文链接:https://www.haomeiwen.com/subject/mdazgdtx.html