最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Unity Audio -- (2)創(chuàng)建動(dòng)態(tài)音效

2023-05-08 20:44 作者:vivo119  | 我要投稿

評(píng)估場(chǎng)景需求

????????本節(jié)的目標(biāo)是添加腳步聲到角色身上,當(dāng)角色走路時(shí),觸發(fā)動(dòng)畫事件并播放聲音。

? ? ? ? 腳步聲是我們?cè)谡鎸?shí)世界中常常被我們所忽視的聲音,但腳步聲能夠傳達(dá)出許多環(huán)境信息。你現(xiàn)在可以花一小段時(shí)間繞著你周圍的環(huán)境走一走并仔細(xì)聽聽腳步聲。如果可能的話,在不同的表面上都行走一下,然后感受一下腳步聲在不同的表面上的聲音有什么不同(比如地毯和木地板上)?光腳和穿鞋時(shí)聲音有什么不同?

? ? ? ? 在示例場(chǎng)景中,我們可以看到三種不同的地面:草地、池子的水和洞穴。當(dāng)玩家走過這些表面時(shí),應(yīng)該有不同的腳步聲。


添加動(dòng)畫事件(Animation Events)

? ? ? ? 我們希望達(dá)到的效果是,當(dāng)角色的腳正好碰到地面時(shí),會(huì)播放對(duì)應(yīng)的腳步聲。在Unity中,我們可以通過使用動(dòng)畫事件來完成這個(gè)功能,將角色動(dòng)畫動(dòng)作過程的某個(gè)部分關(guān)聯(lián)出對(duì)應(yīng)音效的播放。動(dòng)畫事件的工作原理和關(guān)鍵幀是類似的,但它不是用來告訴角色該如何運(yùn)動(dòng),而是發(fā)送一個(gè)消息,這個(gè)消息能夠被腳本用來做一些事情。在案例中,我們會(huì)使用一個(gè)預(yù)先寫好的腳本來播放腳步聲。

? ? ? ? 1. 進(jìn)入到放置動(dòng)畫的目錄,Assets > CreativeCore_Audio > StarterAssets > ThirdPersonController > Character > TutorialAnimations。

? ? ? ? 2. 選擇Locomotion--Walk_N動(dòng)畫

? ? ? ? 3. 在Inspector中,選擇Animation標(biāo)簽頁(yè),展開Events部分。

? ? ? ? Events展開后,主要有一個(gè)小的時(shí)間軸和一不同類型數(shù)據(jù)的列表,這些數(shù)據(jù)是能夠被發(fā)送出去的,但目前我們沒有添加任何事件,因此是灰色的。?

? ? ? ? 4. 我們可以按住并向上拖動(dòng)動(dòng)畫預(yù)覽窗口上的帶兩條線的地方,將預(yù)覽窗口放大一些。

? ? ? ? 我們想要做的是在動(dòng)畫播放到角色的腳步剛好接觸地面的時(shí)候,觸發(fā)一個(gè)動(dòng)畫事件。為了達(dá)成這個(gè)目標(biāo),我們需要先在動(dòng)畫中定位到這個(gè)點(diǎn)。我們可以通過在動(dòng)畫預(yù)覽窗口中手動(dòng)拖動(dòng)關(guān)鍵幀來得到這個(gè)點(diǎn)(左鍵按住播放鍵右邊的那個(gè)灰色條進(jìn)行拖動(dòng))。在拖動(dòng)過程中,?Event時(shí)間軸會(huì)調(diào)整到預(yù)覽動(dòng)畫的對(duì)應(yīng)位置。

? ? ? ? 5. 拖動(dòng)到角色左腳剛好接觸地面的這一幀(大概是第9幀的位置)。

? ? ? ? 6. Inspector中回到Events部分,點(diǎn)擊Add Event按鈕。

? ? ? ? 此時(shí)在Event時(shí)間軸上動(dòng)畫指定的點(diǎn)上,會(huì)出現(xiàn)一個(gè)小的標(biāo)志。這會(huì)啟用時(shí)間軸下方的數(shù)據(jù)類型。

? ? ? ? 7. 在funtion參數(shù)中,輸入“PlayStep”。這個(gè)名字是后面我們要使用的腳本里的一個(gè)方法是對(duì)應(yīng)的,因此確保這個(gè)名字拼寫是沒有問題的。

? ? ? ? 8. 重復(fù)這個(gè)步驟,將玩家右腳正好接觸地面時(shí)的PlayStep的Event也設(shè)置好。

? ? ? ? 9. 在Inspector的底部,點(diǎn)擊Apply按鈕,保存事件到動(dòng)畫中。

? ? ? ? 10. 在Animations目錄中找到Run和Jump Landing的動(dòng)畫,重復(fù)上面添加event的過程。記住最后要點(diǎn)擊Apply按鈕保存修改。

應(yīng)用Audio腳本

? ? ? ? 目前動(dòng)畫已經(jīng)配置成了當(dāng)角色腳接觸地面的時(shí)候,會(huì)發(fā)送出一個(gè)事件請(qǐng)求。這個(gè)事件會(huì)傳遞給和動(dòng)畫相連接的游戲?qū)ο?,因此管理腳步聲播放的腳本必須被用到角色上。為了能實(shí)際為動(dòng)畫播放聲音,我們還需要給角色增加一個(gè)Audio Source組件。

? ? ? ? 1. 在Scritps目錄下,找到FootstepManager腳本。將這個(gè)腳本添加到Hierarchy里的ThirdPersonController里的PlayerArmature游戲物體上。

? ? ? ? 2. 保持player被選中,在其Inspector中點(diǎn)擊Add Component按鈕,然后搜索并選擇Audio Source。

?

探索聲音腳本

? ? ? ? 我們簡(jiǎn)單看看FootstepManager腳本。在Inspector中,我們可以看到它下面有三個(gè)下拉菜單,標(biāo)記為grass,water和cave,分別對(duì)應(yīng)三種不同的腳步聲。這些下拉菜單表示的是多個(gè)腳步聲的list。在后面我們會(huì)討論原因。

? ? ? ? 如果我們想更深入了解一下腳本里到底干了什么事,可以打開腳本,重點(diǎn)關(guān)注一下幾點(diǎn):

? ? ? ? OnControllerColliderHit方法會(huì)檢測(cè)player當(dāng)前行走在什么類型的表面上,它是通過檢查關(guān)聯(lián)的tag來實(shí)現(xiàn)這個(gè)功能的(這些tag我們會(huì)在后面添加)。

? ? ? ? 當(dāng)場(chǎng)景中發(fā)生了我們之前配置的動(dòng)畫事件,它會(huì)調(diào)用PlayStep方法,這個(gè)方法會(huì)隨機(jī)從前面我們看到的不同類型的表面的腳步聲list中選擇其中一種出來進(jìn)行播放。

給場(chǎng)景的不同表面打tag

? ? ? ? 為了要讓腳本知道該播放哪類聲音,F(xiàn)ootstepManager首先需要知道player當(dāng)前站在哪種類型的表面上。我們可以通過使用tag來實(shí)現(xiàn)這個(gè)功能。

? ? ? ? 1. 在場(chǎng)景視圖中選擇grass表面。在Inspector的頂部,選擇Tag處的下拉菜單,然后在列表底部選擇Add Tag。

? ? ? ? 2. 在Tags and Layers中,選擇“+”按鈕,添加一個(gè)新的tag。將新tag命名為“Grass”,注意這里因?yàn)槟_本需要使用,名字必須拼寫正確。

? ? ? ? 3. 再創(chuàng)建兩個(gè)新的tag:Water和Cave。

? ? ? ? 4. 在場(chǎng)景中再次選擇grass表面,將tag設(shè)置為Grass。

? ? ? ? 5. 選擇場(chǎng)景視圖中的water表面,將tag設(shè)置為Water。

? ? ? ? 6. 選擇場(chǎng)景視圖中的cave,將tag設(shè)置為Cave。

添加腳步音頻片段

? ? ? ? 目前場(chǎng)景已經(jīng)為腳步聲腳本播放合適的聲音做好了配置,接下來我們要將對(duì)應(yīng)的音頻片段添加進(jìn)來了。之前我們說過,腳本的每種類型的Audio clip片段變量是一個(gè)列表,這個(gè)列表可以包含多個(gè)音頻片段。腳本里會(huì)隨機(jī)選擇其中一個(gè)進(jìn)行播放。這里為什么要用多個(gè)音頻片段呢?如果我們只為每種類型的腳步聲添加一個(gè)音頻片段會(huì)怎樣呢?

? ? ? ? 1. 在Audio文件夾中,選擇一種grass腳步聲片段,將它拖動(dòng)到FootstepManager腳本組件(和PlayerArmature關(guān)聯(lián))里的Grass Steps變量上。在列表中會(huì)自動(dòng)出現(xiàn)這個(gè)音頻片段。

? ? ? ? 2. 重復(fù)上面的步驟,添加water和cave的腳步聲片段。

? ? ? ? 3. 運(yùn)行場(chǎng)景,四處走動(dòng)一下,控制角色分別在三種不同的表面上行走。

? ? ? ? 剛開始我們可能還沒什么感覺,但如果我們?cè)趫?chǎng)景上控制角色多走一會(huì)兒,我們會(huì)很快開始覺得腳步聲沒有什么變化。也許在切換到不同表面的時(shí)候,我們還能有點(diǎn)明顯的感受,但最終我們都會(huì)注意到其實(shí)每種聲音都是固定的一種,沒有變化,會(huì)讓人感到無聊。

? ? ? ? 由于角色在實(shí)際的游戲中在各個(gè)場(chǎng)景里基本是保持不變的,可以確定的一件事是玩家最終肯定會(huì)察覺到這些單調(diào)的腳步聲。腳步聲只有一種,也不符合我們?cè)谡鎸?shí)世界中的體驗(yàn)。真實(shí)世界中,我們的每一步即便踩在相同的地面上,由于動(dòng)作上的細(xì)微差異,可能重一點(diǎn)或輕一點(diǎn),也可能是會(huì)多摩擦了一會(huì)兒地面,會(huì)導(dǎo)致聲音有變化。雖然我們不可能在游戲中為一種腳步聲添加成百上千種音頻片段,但多幾個(gè)片段隨機(jī)選擇總會(huì)比單一重復(fù)的一種片段要好得多。

? ? ? ? 4. 在Audio目錄中選擇所有的grass腳步聲片段,拖動(dòng)它們到Inspector中FootstepManager腳本組件(和PlayerArmature關(guān)聯(lián))里的Grass Steps列表上。

? ? ? ? 5. 重復(fù)上面的步驟添加water和cave對(duì)應(yīng)的所有腳步聲片段。

? ? ? ? 6. 運(yùn)行場(chǎng)景,控制角色在不同的平面上行走,聽聽看效果有什么不同。

探索:進(jìn)一步定制腳步聲

? ? ? ? 在前面我們用了一些不同的腳步聲音頻片段來實(shí)現(xiàn)草地、水面和洞穴情況時(shí)的音效。實(shí)際在在Unity中替換這些音頻片段非常簡(jiǎn)單。接下來我們可以去試試加入不同的音頻片段,可以天馬行空一下,比如角色踩到草地上時(shí),我們播放羊叫的聲音。

? ? ? ? 除了Unity的資源商店,網(wǎng)絡(luò)上還有很多地方提供了很不錯(cuò)的音效文件。比如:
????????OpenGameArt.org

????????https://opengameart.org/

????????Freesound

????????https://freesound.org/? ? ? ??

????????不管我們?cè)趺茨玫揭纛l文件的,有一點(diǎn)需要我們注意的是我們所使用的音頻的license。license類型會(huì)告訴我們對(duì)應(yīng)音頻文件的使用者所需要注意的地方,比如下面這個(gè)Open Game Art的例子(Public Domain):

? ? ? ? 更多關(guān)于音頻文件license的說明,可以參考一下這里:

? ? ????https://www.zhihu.com/question/277603079/answer/831076868? ? ? ??

????????在Unity中,可以使用的音頻文件格式有:aif, .wav, .mp3 以及.ogg。

Unity Audio -- (2)創(chuàng)建動(dòng)態(tài)音效的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
秭归县| 正宁县| 赤壁市| 治多县| 宁都县| 新河县| 陆川县| 昆山市| 新龙县| 聂荣县| 桐梓县| 武隆县| 嘉禾县| 红安县| 育儿| 万宁市| 张家界市| 湟源县| 南和县| 封丘县| 耿马| 泾源县| 隆德县| 汤原县| 都兰县| 栾城县| 威信县| 将乐县| 济阳县| 汉阴县| 乐平市| 广安市| 冀州市| 沙坪坝区| 封开县| 宜川县| 鄂伦春自治旗| 临西县| 九江县| 大埔区| 盐边县|