? ? ? ? 本節(jié)會(huì)添加場景中小瀑布的音效。小瀑布的音效會(huì)有一個(gè)作用范圍,也會(huì)根據(jù)角色所處的位置不同,產(chǎn)生不同的效果。
添加小瀑布的聲音
? ? ? ? 1. 在Hierarchy中,點(diǎn)擊右鍵,選擇Audio -> Create Audio Source,將這個(gè)新的Audio Source名字設(shè)為“Waterfall Audio”。
? ? ? ? 2. 在場景試圖中,移動(dòng)Audio Source到小瀑布的底部,在池子和瀑布接觸的位置。
? ? ? ? 3. 找到AmbientWater音頻片段(Assets > CreativeCore_Audio > Audio目錄下),將它添加到Audio Source的Audio Clip變量中(推動(dòng)或者點(diǎn)擊瀏覽按鈕選擇)。
? ? ? ? ? ? 場景中的小瀑布的音效,只要場景是激活狀態(tài),就應(yīng)該一直保持播放狀態(tài)。
? ? ? ? 4. 我們將Audio Source組件的Loop勾選上,讓音頻無限循環(huán)播放。
? ? ? ? 5.? 運(yùn)行場景。
? ? ? ? ? ? ? ? 我們會(huì)聽到瀑布的聲音會(huì)一直持續(xù),但它的音量并不會(huì)隨著player和瀑布的距離變化而變化。這是因?yàn)锳udio Source當(dāng)前被設(shè)置為了2D。一般來說,場景中類似瀑布的聲音源是存在于3D空間中的,因此Audio Source需要進(jìn)一步調(diào)整。
? ? ? ? 6. 退出Play模式。
? ? ? ? 7. 設(shè)置Audio Source的Spatial Blend屬性為3D。
? ? ? ? ? ? ? ? 當(dāng)這個(gè)屬性設(shè)置為3D后,audio source的體積的最小和最大距離(場景視圖中Audio Source的兩個(gè)球體)就會(huì)起作用了。
? ? ? ? ?8. 調(diào)整一下Audio Source的minimum distance和maximum distance屬性,這個(gè)覆蓋范圍可以通過場景試圖來看,調(diào)整到合適的范圍即可。
? ? ? ? 9. 示例中的maximum distance大概設(shè)置為了10。
?????????嘗試運(yùn)行看看效果,玩家要進(jìn)入這個(gè)范圍后才會(huì)有聲音,并且音量會(huì)發(fā)生變化。
調(diào)整聲音的擴(kuò)散角度
? ? ? ? 在進(jìn)入下一項(xiàng)瀑布Audio Source的調(diào)整前,我們先來做個(gè)小實(shí)驗(yàn):
? ? ? ? 1. 進(jìn)入Play模式。
? ? ? ? 2. 移動(dòng)到Audio Source的Max Distance的外邊界,然后將角色轉(zhuǎn)到左邊和右邊,注意聲音有什么變化。
? ? ? ? ? ? ? ? 當(dāng)角色轉(zhuǎn)向左邊時(shí),聲音似乎平移到了右邊的揚(yáng)聲器中(可以理解為角色右邊耳朵更靠近音源),左邊揚(yáng)聲器的聲音顯著降低或者完全消失。當(dāng)角色轉(zhuǎn)向右邊時(shí),聲音在左邊更加明顯。我們最好使用耳機(jī)來感受這個(gè)實(shí)驗(yàn)的效果。
? ? ? ? ? ? ? ? 我們聽到的聲音差異,是由3D聲音設(shè)置里的Spread值所控制的。默認(rèn)情況下,這個(gè)值是0,意味著揚(yáng)聲器所發(fā)出的聲音是完全基于音源的位置信息的。從技術(shù)角度看這種行為是能講通的,但實(shí)際效果卻會(huì)顯得很不和諧,因?yàn)槁曇艟拖袷菑囊粋€(gè)揚(yáng)聲器跳到了另一個(gè)揚(yáng)聲器去了。
? ? ? ? 3. 仍然在Play模式下,將Spread設(shè)置為180。
? ? ? ? ? ? ? ? 此時(shí)我們會(huì)注意到,兩個(gè)揚(yáng)聲器的聲音變得均衡了。Spread為180時(shí),?去掉了揚(yáng)聲器和audio source之間的位置關(guān)系,只會(huì)根據(jù)角色位置信息產(chǎn)生音量的變化。
? ? ? ? 4. 調(diào)整Spread值,直到我們找到一個(gè)聽起來沒問題的值,記住這個(gè)值。
? ? ? ? ? ? ? ? 當(dāng)發(fā)生轉(zhuǎn)向時(shí),從左到右的聲音轉(zhuǎn)換應(yīng)該是和諧的,但會(huì)有點(diǎn)細(xì)微差異。我們以現(xiàn)實(shí)生活中的感知為例。當(dāng)我們一只耳朵更靠近音源時(shí),肯定是更靠近音源的耳朵聲音更明顯,但另一只耳朵也并不是說就完全聽不到或者聲音變得非常小了。
? ? ? ? 5. 退出Play模式,將第4步記錄的值設(shè)置到Spread屬性中。
? ? ? ? ? ? ? ? Spread值一般設(shè)置到0-180之間,我們就能找到一個(gè)比較合適的值。但Spread值最大能到360。180-360之間的值實(shí)際作用和0-180是一樣的,但超過180后,聲音的通道會(huì)反轉(zhuǎn)。在某些情況下這種特性可能會(huì)起到特殊作用,但本場景中只要0-180之間的一個(gè)值即可。
探索對(duì)數(shù)滾降(Logarithmic Rolloff)
? ? ? ? 目前聲音在左右揚(yáng)聲器之間的轉(zhuǎn)換已經(jīng)比較平滑了,但我們?nèi)匀粫?huì)注意到一個(gè)問題。即便我們已經(jīng)在Max Distance距離之外,瀑布的聲音仍然是可以聽到的。Max Distance就好像是代表了聲音的最小音量,這是怎么回事呢?
? ? ? ? 造成這個(gè)問題的原因是音源的音量滾降( Audio Source’s Volume Rolloff)類型被設(shè)置為了對(duì)數(shù)滾降(Logarithmic Rolloff)。對(duì)數(shù)滾降的方式是真實(shí)世界總我們所感知聲音的近似,由于我們對(duì)場景進(jìn)行了一些修改,這種方式的效果可能不是那么明顯。
? ? ? ? 1. 為了更好地理解對(duì)數(shù)滾降是如何工作的,我們將Max Distance設(shè)置回500。
? ? ? ? ? ? ? ? 修改后,我們應(yīng)該能看到上圖的曲線。圖中紅色線表示了音量隨著Audio Listener距離的增加而減小。這條曲線一開始的一小段距離內(nèi)降低地很快很陡,到后面會(huì)慢慢降低至0。這條紅色線代表了Audio Source的音量衰減率曲線。
? ? ? ? 2. 將Max Distance設(shè)置回10,觀察一下曲線有什么變化。
? ? ? ? 當(dāng)Max Distance被設(shè)置到了一個(gè)較小的值時(shí),對(duì)數(shù)滾降方式無法達(dá)到達(dá)到它想要的衰減曲線(想想對(duì)數(shù)函數(shù)的曲線應(yīng)該不難理解)。它會(huì)嘗試應(yīng)用合適的曲線,但只能得到截短的曲線。我們可以看到最大距離10處,音量停在了0.3處。
? ? ? ? 對(duì)數(shù)滾降方式中的Max Distance的理解,有一點(diǎn)很重要。這個(gè)距離并不是說聲音聽不到的距離,而是聲音停止衰減的距離。聲音在超出這個(gè)距離之外的一段距離內(nèi)仍然會(huì)繼續(xù)按照結(jié)束的衰減率進(jìn)行處理,但隨著距離增大,聲音最終會(huì)聽不到。
? ? ? ? 3. 我們點(diǎn)擊運(yùn)行進(jìn)入游戲,控制玩家慢慢遠(yuǎn)離瀑布,注意聽在什么地方瀑布的聲音無法再被聽到。
? ? ? ? 由于對(duì)數(shù)滾降方式的這些特性,它對(duì)于要從很遠(yuǎn)距離就能聽到的聲音的場景來說是不錯(cuò)的選擇。但對(duì)于音源會(huì)在極短距離內(nèi)快速衰減的情況來說,又該怎么辦呢?
探索線性滾降(Linear Rolloff)
? ? ? ? 1. 將Volume Rolloff選項(xiàng)從Logarithmic改成Linear,注意曲線的變化:
? ? ? ? 我們可以從名字知道,線性滾降的曲線是一條直線,聲音的音量會(huì)以線性的方式遞減。最重要的是不像對(duì)數(shù)滾降,即便Max Distance較小,音量在最大距離處也會(huì)降低到0。
? ? ? ? 2. 運(yùn)行場景,感受一下線性滾降和對(duì)數(shù)滾降的區(qū)別。
? ? ? ? 當(dāng)角色在Max Distance范圍外時(shí),瀑布的聲音完全聽不到。但只要進(jìn)入Max Distance范圍內(nèi),聲音會(huì)突然播放,聲音就像是憑空出現(xiàn)而不是逐漸放大。當(dāng)角色逐漸靠近音源時(shí),聲音會(huì)平滑增長,這樣似乎還不錯(cuò),但這并非是聲音在真實(shí)世界中該有的現(xiàn)象。
? ? ? ? 線性滾降方式最佳的使用方式是用于吸引玩家注意某些物體,而不是用于環(huán)境音源。音量線性增加會(huì)讓玩家更容易判斷音源和玩家的距離,可以讓玩家知道他們的移動(dòng)方向是否正確。舉一個(gè)神秘海域的例子大家應(yīng)該就明白了?!渡衩睾S?失落遺產(chǎn)》中,有一個(gè)道具是“女王的紅寶石”,這個(gè)道具能夠在接近寶藏的時(shí)候發(fā)出聲響。玩家越接近寶藏,聲音就越急促,玩家離開一定范圍,聲音就消失了(實(shí)際上頑皮狗是否是使用了線性滾降方式不得而知,但這個(gè)例子能比較好的理解線性滾降的場景)。
創(chuàng)建自定義的滾降曲線
? ? ? ? Unity也允許我們自定義滾降曲線。下面我們來看看這個(gè)功能。
? ? ? ? 1. 將Volume Rolloff修改成Custom,觀察一下曲線:
? ? ? ? 2. 運(yùn)行場景,體驗(yàn)一下效果。
? ? ? ? ? ? 這條曲線相比于線性曲線,已經(jīng)更加自然了。我們還可以進(jìn)一步編輯曲線。
? ? ? ? 3. 選擇紅色曲線。
? ? ? ? 4. 選擇1.0標(biāo)記處的點(diǎn),這會(huì)激活曲線的切線編輯:
? ? ? ? 5. 左鍵點(diǎn)擊并拖動(dòng)切線,改變一下曲線的形狀。
? ? ? ? ?我們可能會(huì)需要在曲線上編輯更多的點(diǎn),在曲線上點(diǎn)擊右鍵選擇Add Key可以新增一個(gè)編輯點(diǎn)。
? ? ? ? 接下來嘗試去改改新增點(diǎn)的切線。新增的點(diǎn)有左右兩條切線可以編輯。默認(rèn)情況下它們會(huì)一起移動(dòng),我們可以在右鍵菜單中選擇Broken來單獨(dú)編輯左右兩條切線。
? ? ? ? 6. 嘗試為瀑布編輯出一條最佳效果的曲線。然后運(yùn)行場景,如果不滿意再次嘗試去編輯一下。
調(diào)整Audio Listener
? ? ? ? 我們還可能注意到了一個(gè)問題,當(dāng)角色進(jìn)入到音源的范圍內(nèi)時(shí),聲音會(huì)延遲一段距離后才播放。這是因?yàn)槟壳皥鼍爸械腁udio Listener是掛在相機(jī)上的,相機(jī)和角色是存在一定距離的。
? ? ? ? 有一條比較好的通用原則是將Audio Listener掛在用戶要和虛擬世界進(jìn)行交互的物體身上。比如對(duì)于第一人稱視角,將Audio Listener掛在Main Camera上是講得通的:這種情況下相機(jī)就是用戶的“眼睛”,眼睛和耳朵放到一起是合理的。本小節(jié)所使用的是一個(gè)third person controller,意味著用戶是通過角色來和虛擬世界進(jìn)行交互的。因此Audio Listener應(yīng)該掛到角色身上。這就是說音效會(huì)基于角色位置來改變,這樣會(huì)更符合預(yù)期。
? ? ? ? 1. 在Hierarchy中選擇Main Camera,在Inspector中找到Audio Listener。
? ? ? ? 2. 點(diǎn)擊Audio Listener組件右上角的三個(gè)圓點(diǎn),選擇Remove Componet移除該組件(也可以通過將左上角的勾去掉禁用這個(gè)組件)。
? ? ? ? 3. 在Hierarchy中選擇PlayerArmature游戲物體,在Inspetor中為其添加Audio Listener組件。文章來源:http://www.zghlxwxcb.cn/news/detail-475746.html
? ? ? ? 4. 運(yùn)行場景再體驗(yàn)一下有何不同。文章來源地址http://www.zghlxwxcb.cn/news/detail-475746.html
到了這里,關(guān)于Unity Audio -- (3)創(chuàng)建3D音效的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!