Unity Audio -- (3)创建3D音效

这篇具有很好参考价值的文章主要介绍了Unity Audio -- (3)创建3D音效。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        本节会添加场景中小瀑布的音效。小瀑布的音效会有一个作用范围,也会根据角色所处的位置不同,产生不同的效果。

添加小瀑布的声音

        1. 在Hierarchy中,点击右键,选择Audio -> Create Audio Source,将这个新的Audio Source名字设为“Waterfall Audio”。

        2. 在场景试图中,移动Audio Source到小瀑布的底部,在池子和瀑布接触的位置。

        3. 找到AmbientWater音频片段(Assets > CreativeCore_Audio > Audio目录下),将它添加到Audio Source的Audio Clip变量中(推动或者点击浏览按钮选择)。

            场景中的小瀑布的音效,只要场景是激活状态,就应该一直保持播放状态。

        4. 我们将Audio Source组件的Loop勾选上,让音频无限循环播放。

Unity Audio -- (3)创建3D音效

        5.  运行场景。

                我们会听到瀑布的声音会一直持续,但它的音量并不会随着player和瀑布的距离变化而变化。这是因为Audio Source当前被设置为了2D。一般来说,场景中类似瀑布的声音源是存在于3D空间中的,因此Audio Source需要进一步调整。

        6. 退出Play模式。

        7. 设置Audio Source的Spatial Blend属性为3D。

                当这个属性设置为3D后,audio source的体积的最小和最大距离(场景视图中Audio Source的两个球体)就会起作用了。

Unity Audio -- (3)创建3D音效

         8. 调整一下Audio Source的minimum distance和maximum distance属性,这个覆盖范围可以通过场景试图来看,调整到合适的范围即可。

        9. 示例中的maximum distance大概设置为了10。

Unity Audio -- (3)创建3D音效

         尝试运行看看效果,玩家要进入这个范围后才会有声音,并且音量会发生变化。

调整声音的扩散角度

        在进入下一项瀑布Audio Source的调整前,我们先来做个小实验:

        1. 进入Play模式。

        2. 移动到Audio Source的Max Distance的外边界,然后将角色转到左边和右边,注意声音有什么变化。

                当角色转向左边时,声音似乎平移到了右边的扬声器中(可以理解为角色右边耳朵更靠近音源),左边扬声器的声音显著降低或者完全消失。当角色转向右边时,声音在左边更加明显。我们最好使用耳机来感受这个实验的效果。

                我们听到的声音差异,是由3D声音设置里的Spread值所控制的。默认情况下,这个值是0,意味着扬声器所发出的声音是完全基于音源的位置信息的。从技术角度看这种行为是能讲通的,但实际效果却会显得很不和谐,因为声音就像是从一个扬声器跳到了另一个扬声器去了。

        3. 仍然在Play模式下,将Spread设置为180。

Unity Audio -- (3)创建3D音效

                此时我们会注意到,两个扬声器的声音变得均衡了。Spread为180时, 去掉了扬声器和audio source之间的位置关系,只会根据角色位置信息产生音量的变化。

        4. 调整Spread值,直到我们找到一个听起来没问题的值,记住这个值。

                当发生转向时,从左到右的声音转换应该是和谐的,但会有点细微差异。我们以现实生活中的感知为例。当我们一只耳朵更靠近音源时,肯定是更靠近音源的耳朵声音更明显,但另一只耳朵也并不是说就完全听不到或者声音变得非常小了。

        5. 退出Play模式,将第4步记录的值设置到Spread属性中。

                Spread值一般设置到0-180之间,我们就能找到一个比较合适的值。但Spread值最大能到360。180-360之间的值实际作用和0-180是一样的,但超过180后,声音的通道会反转。在某些情况下这种特性可能会起到特殊作用,但本场景中只要0-180之间的一个值即可。

探索对数滚降(Logarithmic Rolloff)

        目前声音在左右扬声器之间的转换已经比较平滑了,但我们仍然会注意到一个问题。即便我们已经在Max Distance距离之外,瀑布的声音仍然是可以听到的。Max Distance就好像是代表了声音的最小音量,这是怎么回事呢?

        造成这个问题的原因是音源的音量滚降( Audio Source’s Volume Rolloff)类型被设置为了对数滚降(Logarithmic Rolloff)。对数滚降的方式是真实世界总我们所感知声音的近似,由于我们对场景进行了一些修改,这种方式的效果可能不是那么明显。

        1. 为了更好地理解对数滚降是如何工作的,我们将Max Distance设置回500。

Unity Audio -- (3)创建3D音效

                修改后,我们应该能看到上图的曲线。图中红色线表示了音量随着Audio Listener距离的增加而减小。这条曲线一开始的一小段距离内降低地很快很陡,到后面会慢慢降低至0。这条红色线代表了Audio Source的音量衰减率曲线。

Unity Audio -- (3)创建3D音效

        2. 将Max Distance设置回10,观察一下曲线有什么变化。

Unity Audio -- (3)创建3D音效

        当Max Distance被设置到了一个较小的值时,对数滚降方式无法达到达到它想要的衰减曲线(想想对数函数的曲线应该不难理解)。它会尝试应用合适的曲线,但只能得到截短的曲线。我们可以看到最大距离10处,音量停在了0.3处。

        对数滚降方式中的Max Distance的理解,有一点很重要。这个距离并不是说声音听不到的距离,而是声音停止衰减的距离。声音在超出这个距离之外的一段距离内仍然会继续按照结束的衰减率进行处理,但随着距离增大,声音最终会听不到。

        3. 我们点击运行进入游戏,控制玩家慢慢远离瀑布,注意听在什么地方瀑布的声音无法再被听到。

        由于对数滚降方式的这些特性,它对于要从很远距离就能听到的声音的场景来说是不错的选择。但对于音源会在极短距离内快速衰减的情况来说,又该怎么办呢?

探索线性滚降(Linear Rolloff)

        1. 将Volume Rolloff选项从Logarithmic改成Linear,注意曲线的变化:

Unity Audio -- (3)创建3D音效

        我们可以从名字知道,线性滚降的曲线是一条直线,声音的音量会以线性的方式递减。最重要的是不像对数滚降,即便Max Distance较小,音量在最大距离处也会降低到0。

        2. 运行场景,感受一下线性滚降和对数滚降的区别。

        当角色在Max Distance范围外时,瀑布的声音完全听不到。但只要进入Max Distance范围内,声音会突然播放,声音就像是凭空出现而不是逐渐放大。当角色逐渐靠近音源时,声音会平滑增长,这样似乎还不错,但这并非是声音在真实世界中该有的现象。

        线性滚降方式最佳的使用方式是用于吸引玩家注意某些物体,而不是用于环境音源。音量线性增加会让玩家更容易判断音源和玩家的距离,可以让玩家知道他们的移动方向是否正确。举一个神秘海域的例子大家应该就明白了。《神秘海域 失落遗产》中,有一个道具是“女王的红宝石”,这个道具能够在接近宝藏的时候发出声响。玩家越接近宝藏,声音就越急促,玩家离开一定范围,声音就消失了(实际上顽皮狗是否是使用了线性滚降方式不得而知,但这个例子能比较好的理解线性滚降的场景)。

创建自定义的滚降曲线

        Unity也允许我们自定义滚降曲线。下面我们来看看这个功能。

        1. 将Volume Rolloff修改成Custom,观察一下曲线:

Unity Audio -- (3)创建3D音效

        2. 运行场景,体验一下效果。

            这条曲线相比于线性曲线,已经更加自然了。我们还可以进一步编辑曲线。

        3. 选择红色曲线。

        4. 选择1.0标记处的点,这会激活曲线的切线编辑:

Unity Audio -- (3)创建3D音效

        5. 左键点击并拖动切线,改变一下曲线的形状。

Unity Audio -- (3)创建3D音效

         我们可能会需要在曲线上编辑更多的点,在曲线上点击右键选择Add Key可以新增一个编辑点。

        接下来尝试去改改新增点的切线。新增的点有左右两条切线可以编辑。默认情况下它们会一起移动,我们可以在右键菜单中选择Broken来单独编辑左右两条切线。

        6. 尝试为瀑布编辑出一条最佳效果的曲线。然后运行场景,如果不满意再次尝试去编辑一下。

调整Audio Listener

        我们还可能注意到了一个问题,当角色进入到音源的范围内时,声音会延迟一段距离后才播放。这是因为目前场景中的Audio Listener是挂在相机上的,相机和角色是存在一定距离的。

Unity Audio -- (3)创建3D音效

        有一条比较好的通用原则是将Audio Listener挂在用户要和虚拟世界进行交互的物体身上。比如对于第一人称视角,将Audio Listener挂在Main Camera上是讲得通的:这种情况下相机就是用户的“眼睛”,眼睛和耳朵放到一起是合理的。本小节所使用的是一个third person controller,意味着用户是通过角色来和虚拟世界进行交互的。因此Audio Listener应该挂到角色身上。这就是说音效会基于角色位置来改变,这样会更符合预期。

        1. 在Hierarchy中选择Main Camera,在Inspector中找到Audio Listener。

        2. 点击Audio Listener组件右上角的三个圆点,选择Remove Componet移除该组件(也可以通过将左上角的勾去掉禁用这个组件)。

        3. 在Hierarchy中选择PlayerArmature游戏物体,在Inspetor中为其添加Audio Listener组件。

        4. 运行场景再体验一下有何不同。文章来源地址https://www.toymoban.com/news/detail-475746.html

到了这里,关于Unity Audio -- (3)创建3D音效的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 添加音效的简单方法

    本新手在这里踩了挺多坑,网上的教程又是加混音器,又是动用协程函数、延迟函数的,难顶。 总结一下自己整理出来的简单方法,分为“不能同时出现的音效\\\"(比如走路和跑步音效只能出现一个)和“能同时出现的音效”(比如跑步的时候加上喘息声)两种情况。 一、能

    2024年02月05日
    浏览(69)
  • 【Unity3D】使用 FBX 格式的外部模型 ( 向 Unity 中添加 FBX 模型 | 向 Scene 场景中添加 FBX 模型 | 3D 物体渲染 | 3D 物体材质设置 )

    Unity 中使用的 3D 模型格式为 FBX , 使用如下建模软件 可制作该类型模型 : 3Dmax Maya ZBrush Cinema4D Blender 建模完成后 , 将 3D 模型导出为 FBX ( .fbx ) 格式 即可在 Unity 中使用 ; 在 Project 文件窗口 中的 Asstes 目录 下 , 创建一个模型目录 Models , 将 模型文件直接从文件系统中拖到该目录中

    2023年04月15日
    浏览(82)
  • 【Unity3D】资源文件 ② ( Unity 中场景文件简介 | 查看场景文件内容 | 场景文件相关操作 | 创建场景 | 打开场景 )

    Unity 编辑器中的 场景文件 是以 \\\" .unity \\\" 为后缀的文件 , 该文件中会记录所有 游戏物体 GameObject , 以及游戏物体的相关数据 , 如下内容都是存储在 场景文件 中的 : 游戏物体 GameObject 节点 : 在 Hierarchy 层级窗口 中 场景文件 下的各个节点 都是游戏物体 , 如 主摄像机 , 光源 , 立

    2024年02月09日
    浏览(59)
  • 【Unity小技巧】3D人物移动脚步和跳跃下落音效控制

    获取人物移动状态 脚步声控制 解释: go 的这个逻辑保证了只有在需要重新设置音频剪辑时才会执行,避免了声音的混叠和中断。如果去除这个逻辑,可能会导致声音播放不正常。 AS.pitch是用来控制音频的音调(pitch)的属性。该属性控制音频的播放速度,1.0 表示正常速度,

    2024年01月22日
    浏览(47)
  • U3D客户端框架之 音效管理器 与 Fmod介绍安装导入Unity

    Unity内置的Audio底层使用的是FMOD,但是功能不够齐全,高级一点的功能如混合(Mix)等无法使用; 音效管理应该和Unity工程解耦合,这样子可以减轻音效设计师的负担; 使用FMOD后,游戏中我们只需要关心sound event名字就可以了,对具体音效资源不会产生依赖; 目前FMOD支持Windo

    2024年02月02日
    浏览(50)
  • OPenGL笔记--创建一个3D场景

    通过前面的学习,基本掌握了怎么绘制图形,使用纹理,接下来就来创建一个3D场景。 基本原理 一个复杂的场景肯定是由一些简单的图形,通过某种组合方式构建起来的,在OPenGL中也不例外;例如:在绘制立方体的时候,立方体也是由6个正方形围起来的; 基本图形 由于显卡

    2024年02月11日
    浏览(41)
  • ThreeJS-3D教学一:基础场景创建

    Three.js 是一个开源的 JS 3D 图形库,用于创建和展示高性能、交互式的 3D 图形场景。它建立在 WebGL 技术之上,并提供了丰富的功能和工具,使开发者可以轻松地构建令人惊叹的 3D 可视化效果。 Three.js 提供了一套完整的工具和 API,用于创建和管理 3D 场景、几何体、纹理、光照

    2024年02月07日
    浏览(56)
  • 五、3d场景的卡片展示的创建

            在我们3d的开发中,对某一些建筑和物体进行解释说明是非常常见的现象,那么就不得不说卡片的展示了,卡片展示很友好的说明了当前物体的状态,一目了然,下面就是效果图。 它主要有两个方法来实现,大量的图片建议使用canvas来实现,少量的可以使用标签实

    2024年02月03日
    浏览(40)
  • Three.js之创建3D场景

    【G】Three.js官方文档:https://threejs.org/docs/ Three.js是一个流行的WebGL库,官方文档提供了详细的API参考和示例,适合学习和参考。 【G】Three.js GitHub链接:https://github.com/mrdoob/three.js 这是一个流行的基于WebGL的3D图形库,提供了丰富的功能和工具,用于创建交互式的3D场景和应用。

    2024年02月14日
    浏览(82)
  • 使用cannon.js创建3D物理仿真场景

    本文将详细介绍使用cannon.js创建3D物理仿真场景的步骤和技巧。 cannon.js是一个开源的JavaScript物理库,用于实现3D物理仿真。它可以被用于游戏开发、机器人控制、交互式的3D应用以及其他需要物理交互的场景。 与其他物理库不同的是,cannon.js是一个非常轻量级的库,它的代码

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包