【Unity2D 2022:Audio】添加游戏音乐和音效

一、添加背景音乐

1. 创建空的游戏物体,名为BackgroundMusic

2. 为音频播放器添加音频源(Audio Source)组件

3. 将背景音乐音频赋值到AudioClip(红色)

4. 设置循环播放(蓝色)

二、添加草莓拾取音效

1. 为角色添加音频源组件

2. 取消勾选Play On Awake选项(即取消游戏开始时自动播放)

3. 编辑角色脚本

        (1)创建音频源对象

public class Ruby : MonoBehaviour 
{// 创建音频源对象public AudioSource audioSource;
}

        (2)编写playSound方法播放音效

public class Ruby : MonoBehaviour 
{// 创建音频源对象public AudioSource audioSource;// 播放音效public void playSound(AudioClip audioClip){audioSource.PlayOneShot(audioClip);}}

        PlayOneShot()方法为只播放一次音效

4. 编辑草莓脚本

        (1)创建拾取音效

public class Strawberry : MonoBehaviour 
{// 创建拾取音效public AudioClip pickUpSound;
}

        (2)在角色与草莓碰撞的方法中添加播放拾取音效

public class Strawberry : MonoBehaviour 
{// 创建拾取音效public AudioClip pickUpSound;// 当角色与草莓发生碰撞时private void OnTriggerEnter2D(Collider2D collision){Ruby ruby = collision.GetComponent<Ruby>();if(ruby != null) {if(ruby.healthPoint < ruby.maxHealthPoint) {// 播放拾取音效ruby.playSound(pickUpSound);}}}}

5. 将拾取音效赋值到pickUpSound

三、添加角色受伤音效

1. 编辑角色脚本

        (1)创建Ruby受伤音效

public class Ruby : MonoBehaviour 
{// 创建ruby受伤音效public AudioClip rubyHitSound;
}

        (2)编写changeHealthPoint()方法,当生命改变量小于0(即受到伤害)时,播放角色受伤音效

public class Ruby : MonoBehaviour 
{// 创建ruby受伤音效public AudioClip rubyHitSound;// Ruby改变生命值public void changeHealthPoint(int value) {if(value < 0) {playSound(rubyHitSound);}}
}

2. 将角色受伤音效赋值到rubyHitSound

四、添加角色射击音效

1. 编辑角色脚本

        (1)创建Ruby射击音效

public class Ruby : MonoBehaviour 
{// 创建ruby射击音效public AudioClip rubyShootSound;
}

        (2)编写shoot方法,播放ruby射击音效

public class Ruby : MonoBehaviour 
{// 创建ruby射击音效public AudioClip rubyShootSound;// Ruby发射子弹private void shoot(){playSound(rubyShootSound);}
}

2. 将角色射击音效赋值到rubyShootSound

五、添加角色走路音效

1. 编辑角色脚本

        (1)创建行走音频源对象和ruby移动音效

public class Ruby : MonoBehaviour 
{// 创建行走音频源对象public AudioSource walkAudioSource;// 创建ruby移动音效public AudioClip rubyWalkSound;
}

        (2)用walkAudioSource接收AudioSource组件

public class Ruby : MonoBehaviour 
{// 创建行走音频源对象public AudioSource walkAudioSource;// 创建ruby移动音效public AudioClip rubyWalkSound;void Start() {// 用walkAudioSource接收AudioSource组件walkAudioSource = GetComponent<AudioSource>();}
}

        (3) 当Ruby移动且不播放移动音效时,播放角色移动音效

public class Ruby : MonoBehaviour 
{// 创建行走音频源对象public AudioSource walkAudioSource;// 创建ruby移动音效public AudioClip rubyWalkSound;void Start() {// 用walkAudioSource接收AudioSource组件walkAudioSource = GetComponent<AudioSource>();}// 当Ruby移动时if(!Mathf.Approximately(move.x, 0) || !Mathf.Approximately(move.y, 0)) {if(!walkAudioSource.isPlaying) {walkAudioSource.clip = rubyWalkSound;walkAudioSource.Play();}}
}

        (4)当Ruby停止移动时,停止播放移动音效

public class Ruby : MonoBehaviour 
{// 创建行走音频源对象public AudioSource walkAudioSource;// 创建ruby移动音效public AudioClip rubyWalkSound;void Start() {// 用walkAudioSource接收AudioSource组件walkAudioSource = GetComponent<AudioSource>();}// 当Ruby移动时if(!Mathf.Approximately(move.x, 0) || !Mathf.Approximately(move.y, 0)) {if(!walkAudioSource.isPlaying) {walkAudioSource.clip = rubyWalkSound;walkAudioSource.Play();}} else { // 当Ruby停止移动时walkAudioSource.Stop();}
}

2. 把两个音频源组件赋值到audioSource、walkAudioSource

3. 将角色行走音效赋值到rubyWalkSound中

六、添加机器人走路音效

1. 为机器人添加Audio Source组件

2. 将机器人走路音效赋值到AudioClip中

3. 取消勾选PlayOnAwake属性

七、添加机器人受伤音效

1. 创建机器人受伤音效数组

public class Enemy : MonoBehaviour
{// 创建机器人受伤音效数组public AudioClip[] enemyHitSounds;
}

2. 新建一个随机数,为0~机器人受伤音效数组长度之间的随机值,然后随机播放机器人受伤特效数组中的音效

public class Enemy : MonoBehaviour
{// 创建机器人受伤音效数组public AudioClip[] enemyHitSounds;// 敌人改变生命值public async void changeHealthPoint(int value){if(value < 0) {// 新建一个随机数,为0~机器人受伤音效数组长度之间的随机值int randomNum = Random.Range(0, enemyHitSounds.Length);// 随机播放机器人受伤特效数组中的音效audioSource.PlayOneShot(enemyHitSounds[randomNum], 40);}}
}

 3. 将两个机器人受伤音效赋值到Enemy Hit Sounds数组

八、添加机器人修理完成音效

1. 创建机器人修理完成音效

public class Enemy : MonoBehaviour
{// 创建机器人修理完成音效public AudioClip enemyFixSound;
}

2. 播放修复完成特效

public class Enemy : MonoBehaviour
{// 创建机器人修复完成音效public AudioClip enemyFixSound;// 敌人修复完成public void enemyFixed(){// 播放修复完成音效,100为音效音量放大倍数audioSource.PlayOneShot(enemyFixSound, 25);}
}

3. 延迟播放修复完成特效

        (1)新建playFixSound方法,将播放修复完成音效的语句移动到playFixSound方法中

public class Enemy : MonoBehaviour
{// 创建机器人修复完成音效public AudioClip enemyFixSound;// 敌人修复完成public void enemyFixed(){}// 播放敌人修复完成音效private void playFixSound(){audioSource.PlayOneShot(enemyFixSound, 25);}
}

        (2)使用Invoke方法延迟调用playFixSound方法 

public class Enemy : MonoBehaviour
{// 创建机器人修复完成音效public AudioClip enemyFixSound;// 敌人修复完成public void enemyFixed(){Invoke("playFixSound", 0.2f);}// 播放敌人修复完成音效private void playFixSound(){audioSource.PlayOneShot(enemyFixSound, 25);}
}

        (3) 新建stopAudioSourcePlay方法,将stop语句移动到其中,在playFixSound方法中使用Invoke方法延迟调用stopAudioSourcePlay方法

public class Enemy : MonoBehaviour
{// 创建机器人修复完成音效public AudioClip enemyFixSound;// 敌人修复完成public void enemyFixed(){Invoke("playFixSound", 0.2f);}// 播放敌人修复完成音效private void playFixSound(){audioSource.PlayOneShot(enemyFixSound, 25);Invoke("stopAudioSourcePlay", 1.0f);}// 停用音频源组件private void stopAudioSourcePlay(){audioSource.Stop();}
}

3. 将机器人修复完成音效赋值到Enemy Fix Sound

        本章完。感谢阅读! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot封装请求参数json的源码解析

源码位置&#xff1a; org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver#readWithMessageConverters(org.springframework.http.HttpInputMessage, org.springframework.core.MethodParameter, java.lang.reflect.Type…

解答 | http和https的区别,谁更好用

TTP&#xff08;超文本传输协议&#xff09;和HTTPS&#xff08;安全超文本传输协议&#xff09;的主要区别在于安全性和数据传输的方式。 一、区别 1、协议安全性&#xff1a; HTTP&#xff1a;使用明文形式传输数据&#xff0c;不提供数据加密功能&#xff0c;数据在传输过…

coze搭建工作流和Agent

coze搭建工作流和Agent Agent LLM 记忆感知规划使用工具 LLM是大语言模型&#xff0c;prompt提示词影响LLM的输出质量 描述需求——>背景——>解决思路&#xff0c;提示词文档。 当有明确的需求和实现需求的路径时&#xff0c;可以通过搭建工作流来完成标准化任务为…

函数声明与函数表达式的区别?

一、区别如下: 函数声明的方法定义的函数,函数名是必须的,函数表达式的函数名是可选的。函数声明的方法定义的函数,函数可以在函数声明之前调用,函数表达式的函数只能在声明之后调用。 函数声明的方法定义的函数并不是真正的声明,它们仅仅可以出现在全局中,或者嵌套在其他的函数…

Python爬虫原理以及3个小案例(源码)

一、爬虫原理 网络爬虫是一种用于自动获取网页内容的程序。它模拟用户浏览网页的过程&#xff0c;通过发送HTTP请求获取网页的源代码&#xff0c;并利用解析和提取技术来获取所需的数据。 1. HTTP请求与响应过程 爬虫向目标网站发送HTTP请求&#xff0c;请求包含URL、请求方…

Linux内核 -- DMA控制器之dmaengine框架的注册与使用流程

Linux Kernel dmaengine 框架 简介 Linux内核的dmaengine框架是一个用于管理DMA&#xff08;Direct Memory Access&#xff09;操作的通用框架。它抽象了不同DMA控制器的实现&#xff0c;使得上层代码可以方便地进行DMA传输。 初始化流程 1. 驱动注册 每个DMA控制器驱动都…

定义变量和声明变量、定义类和声明类

一、定义变量和声明变量 在编程中&#xff0c;定义变量和声明变量是两个相关但不同的概念&#xff0c;尤其是在静态类型的编程语言中。静态类型的编程语言比如Java 1、声明变量 &#xff08;1&#xff09;定义&#xff1a;声明变量是指告诉编译器变量的名字、类型和在某些情…

Mysql:时区问题

Mysql&#xff1a;时区问题 1、时区配置 Mysql默认使用系统的时区 mysql> show global variables like %time%zone%; -------------------------- | Variable_name | Value | -------------------------- | system_time_zone | | | time_zone | SYSTEM…

Multi-Wing Optimiser风扇选型软件介绍

Multi-Wing Optimiser风扇选型软件

一、YOLO V10安装、使用、训练大全

YOLO V10安装、使用、训练大全 一、下载官方源码二、配置conda环境三、安装YOLOV10依赖四、使用官方YOLO V10模型1.下载模型2.使用模型2.1 图片案例 五、制作数据集1.数据集目录结构2.标注工具2.1 安装标注工具2.2 运行标注工具2.3 设置自动保存2.4 切换yolo模式2.5 开始标注2.…

Socket.D 开源网络应用协议,v2.5.9 发布(已有 java, py, js SDK)

Socket.D 协议&#xff1f; Socket.D 是一个基于事件和语义消息流的网络应用协议。在微服务、移动应用、物联网等场景&#xff0c;可替代 http、websocket 等。协议详情参考《官网介绍》。 支持&#xff1a; tcp, udp, ws, kcp 传输。 目前&#xff1a;java&#xff0c;kotli…

Python不使用元类的ORM实现

不使用元类的简单ORM实现 在 Python 中&#xff0c;ORM&#xff08;Object-Relational Mapping&#xff09;是一种将对象和数据库之间的映射关系进行转换的技术&#xff0c;使得通过面向对象的方式来操作数据库更加方便。通常&#xff0c;我们使用元类&#xff08;metaclass&a…

关于go和rust语言的对比

文章目录 前言Rust 的优势&#xff1a;Go 的优势&#xff1a;总结 前言 Go 和 Rust 是两种现代的系统级编程语言&#xff0c;它们各自拥有独特的特性和应用场景。以下是它们的一些主要区别&#xff1a; Rust 的优势&#xff1a; 内存安全&#xff1a;Rust 引入了所有权和借用…

香橙派5plus上跑云手机方案二 waydroid

前言 上篇文章香橙派5plus上跑云手机方案一 redroid(带硬件加速)说了怎么跑带GPU加速的redroid方案&#xff0c;这篇说下怎么在香橙派下使用Waydroid。 温馨提示 虽然能运行&#xff0c;但是体验下来只能用软件加速&#xff0c;无法使用GPU加速&#xff0c;所有会很卡。而且…

Pat乙级题解

文章目录 1~2021 ~ 4041~6061~8081~100101~125 1~20 1001 害死人不偿命的(3n1)猜想 B1002 写出这个数 (20 分) B1003 我要通过&#xff01; B1004 成绩排名 1005 继续(3n1)猜想 B1006 换个格式输出整数 B1007 素数对猜想 1008 数组元素循环右移问题 B1009 说反话 1010 一元多项…

linux磁盘分区管理

首先关机状态下&#xff0c;先配置硬盘 硬盘分区管理 识别硬盘 》分区规划 》 格式化 》 挂载使用 [rootlocalhost ~]# lsblk 查看硬盘 分区划分&#xff08;m帮助, p 查看分区, n 创建分区, d 删除分区, q 退出, w 保存&#xff0c; g gpt分区&#xff09; [roo…

绝区陆--大语言模型的幻觉问题是如何推动科学创新

介绍 大型语言模型 (LLM)&#xff08;例如 GPT-4、LLaMA-2、PaLM-2、Claude-2 等&#xff09;已展示出为各种应用生成类似人类文本的出色能力。然而&#xff0c;LLM 的一个鲜为人知的方面是它们倾向于“产生幻觉”或生成不正确或没有根据的事实陈述。我不认为这仅仅是一个限制…

快速排序算法Python实现

快速排序原理和步骤 快速排序是一种高效的排序算法&#xff0c;基于分治法&#xff08;Divide and Conquer&#xff09;来实现。其基本思想是通过一次排序将数组分成两部分&#xff0c;其中一部分的所有元素都小于另一部分&#xff0c;然后递归地对这两部分进行排序。以下是快…

前端构建工具(webpackvite)

这里写目录标题 构建工具webpack介绍配置文件简介entryoutputloaderbabel插件开发服务器&#xff08;webpack-dev-server&#xff09;soureMap vite 构建工具 当我们习惯了在node中编写代码的方式后&#xff0c;在回到前端编写html、css、js这些东西会感觉到各种的不便。比如:…

夏季户外综合征怎么预防

以下是一些预防夏季户外综合征的有效方法&#xff1a; 做好防晒措施&#xff1a; 涂抹高倍数的防晒霜&#xff0c;每隔 2 - 3 小时重新涂抹一次。比如选择 SPF50、PA 的防晒霜。佩戴宽边帽子、太阳镜和遮阳伞&#xff0c;减少阳光直射面部和眼睛。像渔夫帽、大檐帽能有效遮挡阳…