【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.pswp.cn/web/42896.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42896.shtml
英文地址,請注明出處:http://en.pswp.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;減少陽光直射面部和眼睛。像漁夫帽、大檐帽能有效遮擋陽…