【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;可以通过搭建工作流来完成标准化任务为…

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.…

Python不使用元类的ORM实现

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

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

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

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 的一个鲜为人知的方面是它们倾向于“产生幻觉”或生成不正确或没有根据的事实陈述。我不认为这仅仅是一个限制…

前端构建工具(webpackvite)

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

12-阿里云单细胞处理-PBMC(by-jmzeng)

scRNA_10X/seurat-v2/sup-patient1-PBMC.Rmd at master jmzeng1314/scRNA_10X (github.com) s04-运行seurat流程处理一万个单细胞转录组数据并自动化出报告_哔哩哔哩_bilibili #section 3已更新#「生信技能树」单细胞公开课2021_哔哩哔哩_bilibili 上传读取数据 可以配置租…

R包: phyloseq扩增子统计分析利器

介绍 phyloseq包对多类型数据的综合软件&#xff0c;并其对这些数据提供统计分析和可视化方法。 微生物数据分析的主要挑战之一是如何整合不同类型的数据&#xff0c;从而对其进行生态学、遗传学、系统发育学、多元统计、可视化和检验等分析。同时&#xff0c;由于同行之间需要…

QT学习日记一

创建QT文件步骤 这是创建之后widget.cpp和widget.h文件的具体代码解释&#xff0c;也是主要操作的文件&#xff0c;其中main.cpp不用操作&#xff0c;ui则是图形化操作界面&#xff0c;综合使用时&#xff0c;添加一个元件要注意重编名和编译一下&#xff0c;才能在widget这类…

生产者消费者模型和线程同步问题

文章目录 线程同步概念生产者消费者模型条件变量使用条件变量唤醒条件变量 阻塞队列 线程同步概念 互斥能保证安全,但是仅有安全不够,同步可以更高效的使用资源 生产者消费者模型 下面就基于生产者消费者来深入线程同步等概念: 如何理解生产消费者模型: 以函数调用为例: 两…

[高频 SQL 50 题(基础版)]第一千七百五十七题,可回收且低脂产品

题目&#xff1a; 表&#xff1a;Products ---------------------- | Column Name | Type | ---------------------- | product_id | int | | low_fats | enum | | recyclable | enum | ---------------------- product_id 是该表的主键&#xff08;具有唯…

SQLite 命令行客户端 + HTA 实现简易UI

SQLite 命令行客户端 HTA 实现简易UI SQLite 客户端.hta目录结构参考资料 仅用于探索可行性&#xff0c;就只实现了 SELECT。 SQLite 客户端.hta <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; cha…

C语言 | Leetcode C语言题解之第226题翻转二叉树

题目&#xff1a; 题解&#xff1a; struct TreeNode* invertTree(struct TreeNode* root) {if (root NULL) {return NULL;}struct TreeNode* left invertTree(root->left);struct TreeNode* right invertTree(root->right);root->left right;root->right le…

LeetCode加油站(贪心算法/暴力,分析其时间和空间复杂度)

题目描述 一.原本暴力算法 最初的想法是&#xff1a;先比较gas数组和cost数组的大小&#xff0c;找到可以作为起始点的站点(因为如果你起始点的油还不能到达下一个站点&#xff0c;就不能作为起始点)。当找到过后&#xff0c;再去依次顺序跑一圈&#xff0c;如果剩余的油为负数…

从数据仓库到数据湖(下):热门的数据湖开源框架

文章目录 一、前言二、Delta Lake三、Apache Hudi四、Apache Iceberg五、Apache Paimon六、对比七、笔者观点八、总结八、参考资料 一、前言 在上一篇从数据仓库到数据湖(上)&#xff1a;数据湖导论文章中&#xff0c;我们简单讲述了数据湖的起源、使用原因及其本质。本篇文章…

AI论文作图——如何表示模型参数冻结状态

一、LOGO &#x1f525; win10win11 ❄️ win10win11 二、注意事项&#xff1a; 根据电脑系统&#xff0c;选择对应的版本。 参考&#xff1a; 【AI论文作图】如何表示模型参数冻结状态&#xff1f;