Unity Audio -- (2)创建动态音效

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

评估场景需求

        本节的目标是添加脚步声到角色身上,当角色走路时,触发动画事件并播放声音。

        脚步声是我们在真实世界中常常被我们所忽视的声音,但脚步声能够传达出许多环境信息。你现在可以花一小段时间绕着你周围的环境走一走并仔细听听脚步声。如果可能的话,在不同的表面上都行走一下,然后感受一下脚步声在不同的表面上的声音有什么不同(比如地毯和木地板上)?光脚和穿鞋时声音有什么不同?

        在示例场景中,我们可以看到三种不同的地面:草地、池子的水和洞穴。当玩家走过这些表面时,应该有不同的脚步声。

Unity Audio -- (2)创建动态音效

添加动画事件(Animation Events)

        我们希望达到的效果是,当角色的脚正好碰到地面时,会播放对应的脚步声。在Unity中,我们可以通过使用动画事件来完成这个功能,将角色动画动作过程的某个部分关联出对应音效的播放。动画事件的工作原理和关键帧是类似的,但它不是用来告诉角色该如何运动,而是发送一个消息,这个消息能够被脚本用来做一些事情。在案例中,我们会使用一个预先写好的脚本来播放脚步声。

        1. 进入到放置动画的目录,Assets > CreativeCore_Audio > StarterAssets > ThirdPersonController > Character > TutorialAnimations。

        2. 选择Locomotion--Walk_N动画

        3. 在Inspector中,选择Animation标签页,展开Events部分。

Unity Audio -- (2)创建动态音效

        Events展开后,主要有一个小的时间轴和一不同类型数据的列表,这些数据是能够被发送出去的,但目前我们没有添加任何事件,因此是灰色的。 

        4. 我们可以按住并向上拖动动画预览窗口上的带两条线的地方,将预览窗口放大一些。

Unity Audio -- (2)创建动态音效

        我们想要做的是在动画播放到角色的脚步刚好接触地面的时候,触发一个动画事件。为了达成这个目标,我们需要先在动画中定位到这个点。我们可以通过在动画预览窗口中手动拖动关键帧来得到这个点(左键按住播放键右边的那个灰色条进行拖动)。在拖动过程中, Event时间轴会调整到预览动画的对应位置。

        5. 拖动到角色左脚刚好接触地面的这一帧(大概是第9帧的位置)。

        6. Inspector中回到Events部分,点击Add Event按钮。

Unity Audio -- (2)创建动态音效

        此时在Event时间轴上动画指定的点上,会出现一个小的标志。这会启用时间轴下方的数据类型。

        7. 在funtion参数中,输入“PlayStep”。这个名字是后面我们要使用的脚本里的一个方法是对应的,因此确保这个名字拼写是没有问题的。

Unity Audio -- (2)创建动态音效

        8. 重复这个步骤,将玩家右脚正好接触地面时的PlayStep的Event也设置好。

        9. 在Inspector的底部,点击Apply按钮,保存事件到动画中。

        10. 在Animations目录中找到Run和Jump Landing的动画,重复上面添加event的过程。记住最后要点击Apply按钮保存修改。

应用Audio脚本

        目前动画已经配置成了当角色脚接触地面的时候,会发送出一个事件请求。这个事件会传递给和动画相连接的游戏对象,因此管理脚步声播放的脚本必须被用到角色上。为了能实际为动画播放声音,我们还需要给角色增加一个Audio Source组件。

        1. 在Scritps目录下,找到FootstepManager脚本。将这个脚本添加到Hierarchy里的ThirdPersonController里的PlayerArmature游戏物体上。

        2. 保持player被选中,在其Inspector中点击Add Component按钮,然后搜索并选择Audio Source。

Unity Audio -- (2)创建动态音效

 

探索声音脚本

        我们简单看看FootstepManager脚本。在Inspector中,我们可以看到它下面有三个下拉菜单,标记为grass,water和cave,分别对应三种不同的脚步声。这些下拉菜单表示的是多个脚步声的list。在后面我们会讨论原因。

Unity Audio -- (2)创建动态音效

        如果我们想更深入了解一下脚本里到底干了什么事,可以打开脚本,重点关注一下几点:

        OnControllerColliderHit方法会检测player当前行走在什么类型的表面上,它是通过检查关联的tag来实现这个功能的(这些tag我们会在后面添加)。

        当场景中发生了我们之前配置的动画事件,它会调用PlayStep方法,这个方法会随机从前面我们看到的不同类型的表面的脚步声list中选择其中一种出来进行播放。

给场景的不同表面打tag

        为了要让脚本知道该播放哪类声音,FootstepManager首先需要知道player当前站在哪种类型的表面上。我们可以通过使用tag来实现这个功能。

        1. 在场景视图中选择grass表面。在Inspector的顶部,选择Tag处的下拉菜单,然后在列表底部选择Add Tag。

Unity Audio -- (2)创建动态音效

        2. 在Tags and Layers中,选择“+”按钮,添加一个新的tag。将新tag命名为“Grass”,注意这里因为脚本需要使用,名字必须拼写正确。

        3. 再创建两个新的tag:Water和Cave。

        4. 在场景中再次选择grass表面,将tag设置为Grass。

Unity Audio -- (2)创建动态音效

        5. 选择场景视图中的water表面,将tag设置为Water。

        6. 选择场景视图中的cave,将tag设置为Cave。

添加脚步音频片段

        目前场景已经为脚步声脚本播放合适的声音做好了配置,接下来我们要将对应的音频片段添加进来了。之前我们说过,脚本的每种类型的Audio clip片段变量是一个列表,这个列表可以包含多个音频片段。脚本里会随机选择其中一个进行播放。这里为什么要用多个音频片段呢?如果我们只为每种类型的脚步声添加一个音频片段会怎样呢?

        1. 在Audio文件夹中,选择一种grass脚步声片段,将它拖动到FootstepManager脚本组件(和PlayerArmature关联)里的Grass Steps变量上。在列表中会自动出现这个音频片段。

        2. 重复上面的步骤,添加water和cave的脚步声片段。

        3. 运行场景,四处走动一下,控制角色分别在三种不同的表面上行走。

        刚开始我们可能还没什么感觉,但如果我们在场景上控制角色多走一会儿,我们会很快开始觉得脚步声没有什么变化。也许在切换到不同表面的时候,我们还能有点明显的感受,但最终我们都会注意到其实每种声音都是固定的一种,没有变化,会让人感到无聊。

        由于角色在实际的游戏中在各个场景里基本是保持不变的,可以确定的一件事是玩家最终肯定会察觉到这些单调的脚步声。脚步声只有一种,也不符合我们在真实世界中的体验。真实世界中,我们的每一步即便踩在相同的地面上,由于动作上的细微差异,可能重一点或轻一点,也可能是会多摩擦了一会儿地面,会导致声音有变化。虽然我们不可能在游戏中为一种脚步声添加成百上千种音频片段,但多几个片段随机选择总会比单一重复的一种片段要好得多。

        4. 在Audio目录中选择所有的grass脚步声片段,拖动它们到Inspector中FootstepManager脚本组件(和PlayerArmature关联)里的Grass Steps列表上。

        5. 重复上面的步骤添加water和cave对应的所有脚步声片段。

        6. 运行场景,控制角色在不同的平面上行走,听听看效果有什么不同。

探索:进一步定制脚步声

        在前面我们用了一些不同的脚步声音频片段来实现草地、水面和洞穴情况时的音效。实际在在Unity中替换这些音频片段非常简单。接下来我们可以去试试加入不同的音频片段,可以天马行空一下,比如角色踩到草地上时,我们播放羊叫的声音。

        除了Unity的资源商店,网络上还有很多地方提供了很不错的音效文件。比如:
OpenGameArt.orghttps://opengameart.org/Freesound - FreesoundFreesound: collaborative database of creative-commons licensed sound for musicians and sound lovers. Have you freed your sound today?https://freesound.org/        不管我们怎么拿到音频文件的,有一点需要我们注意的是我们所使用的音频的license。license类型会告诉我们对应音频文件的使用者所需要注意的地方,比如下面这个Open Game Art的例子(Public Domain):

Unity Audio -- (2)创建动态音效

        更多关于音频文件license的说明,可以参考一下这里:

用别人的音乐做背景音乐的各类短视频侵权了吗? - 知乎认同@广州版权产业服务中心 的说法,首先音乐是有版权的,无论是谁使用这段音乐都需要授权,不分个人用还…https://www.zhihu.com/question/277603079/answer/831076868        在Unity中,可以使用的音频文件格式有:aif, .wav, .mp3 以及.ogg。文章来源地址https://www.toymoban.com/news/detail-481717.html

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

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

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

相关文章

  • 【Unity每日一记】SceneManager场景资源动态加载

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【软件设计师高频考点暴击】 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【u

    2024年02月12日
    浏览(42)
  • 【Unity地形】使用地形工具创建场景环境-Terrain

      如上图Unity的地形工具可以让我们实现创建复杂、丰富的3D室外环境。 我们创建地形很简单,在层级面板中右键-3Dobject-Terrain 就可以创建一个默认的地形模型!这个模型是Unity内置的。 接下来的地形编辑功能全部集中在这个地形的组件上 可以让用户在黄色线里面点击即可扩

    2024年04月11日
    浏览(40)
  • 初识Unity——创建代码、场景以及五个常用面板(创建C#代码、打开代码文件、场景的创建、Project、Hierarchy、Inspector、Scene、Game )

    目录 创建代码 创建C#脚本 打开代码文件 可能出现的问题 场景 场景的创建 基本介绍 五个窗口面板的作用 Project Hierarchy Inspector Scene Game  从unity2018版本开始,unity就开始不再维护和推荐JavaScript for Unity以及Boo等语言,现在官方主推和最常用的脚本语言是C#。 创建一个脚本之后

    2024年02月07日
    浏览(44)
  • 字节跳动 从需求到上线全流程 软件工程流程 需求评估 MVP

    整个课程会带大家先从理论出发,思考为什么有流程 大家以后工作的团队可能不一样,那么 不同的团队也会有不同的流程 ,这背后的逻辑是什么 然后会带大家按照走一遍从需求到上线的全流程,告诉大家在流程的每个阶段,究竟要做什么 最后会给大家介绍一下我们 实践当

    2024年02月11日
    浏览(40)
  • Unity——音乐、音效

    在游戏运行的过程中,音效的播放时机与游戏当前内容密切相关,而且随着场景的变化、剧情的推进,背景音乐也需要适时切换,所以恰当地控制音乐和音效的播放非常重要。音乐和音效的播放、停止、切换和音量变化等,都需要由脚本控制。 简单来说只要有Audio Source组件和

    2024年02月11日
    浏览(36)
  • unity音效添加

    音频资源AudioClip 播放的音频通过摄像头上的Audio Listener监听,Audio Listener有且只有一个,否则会报警告     创建一个空对象,重命名为Music Player(音频源) 为其添加上Audio Souce组件 将AudioClip如图拖入    勾选上loop(循环播放)   进入人物预制体,为其添加上Audio Souce组件,

    2024年02月06日
    浏览(36)
  • Unity入门8——音效系统

    一、音频文件参数面板 Force To Mono:多声道转单声道 Normalize:强制为单声道时,混合过程中被标准化 Load In Background:后台加载,不阻塞主线程,适合大音效 Ambisonic:立体混响声 非常适合 360 视频和 XR 应用程序 如果音频文件包含立体混响声编码的音频,请启用此选项 Load T

    2024年02月15日
    浏览(43)
  • 【unity】【WebRTC】从0开始创建一个Unity远程媒体流app-构建可同步场景

    最近在研究远程画面,所以就实践了一下。技术采用我认为比较合适的WebRTC。 这篇文章的基础是我的另一篇博文,如果希望顺利完成本篇操作,请先关注我后查询我的如下博文: 【WebRTC】【Unity】Unity Web RTC1-Unity中简单实现远程画面 上一篇地址: 【WebRTC】【Unity】Unity Web R

    2024年04月27日
    浏览(33)
  • Unity 添加音效的简单方法

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

    2024年02月05日
    浏览(67)
  • Unity动态创建材质球

    目录 一、获取贴图 1:从Assets文件中获取 2:从本地文件中获取 二、创建材质球 三、替换材质 总结 前言 我们在做一些AR类似与涂涂乐的功能时,经常会用到给模型替换材质球的功能。当我们的用户创建好贴图时就需要动态将新的贴图转换成材质贴在模型上。他的原理其实很

    2024年02月05日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包