首頁 游戲

Minecraft指令手冊

第六十三章 游戲聲音

Minecraft指令手冊 你好MC 2362 2020-02-04 20:58:51

  (觀前提示:此章有部分內(nèi)容涉及到初中物理的知識)

  在之前,我們已經(jīng)大致了解了方塊、實體、狀態(tài)效果、粒子效果這四個在Minecraft中相當常見的四種東西,還學習了一部分基礎(chǔ)的游戲運作機制。接下來,我們就要來看看不管是在Minecraft還是在其他游戲,都具有十分重要地位的東西——游戲聲音。

  在Minecraft中,游戲聲音主要包括以下三類:

  普通音效——由玩家、生物、物品、實體和方塊發(fā)出的聲音,如玩家破壞方塊、鸚鵡學舌、武器損壞、射出的箭落地、熔爐工作。

  環(huán)境音效——這并不是指背景音樂。一般來說,這是指在特定情況下才會播放的聲音,所以才帶有『環(huán)境』二字。比如你在挖礦時突然聽到的怪聲,那其實就是一個環(huán)境音效。關(guān)于這東西我們會在第一百五十章講調(diào)試界面的Mood值時再次提到。

  音樂——一般來說,指的是游戲背景音樂。(C418的音樂針不戳)

  當然,如果要分類得更細一些,那就得按照Minecraft游戲中的分類,也就是你在設(shè)置界面中看到的那十類:主音量(master)、音樂(music)、唱片機/音符盒(record)、天氣(weather)、方塊(block)、敵對生物(hostile)、友好生物(neutral)、玩家(player)、環(huán)境(ambient)、聲音/語音(voice)。

  你在Minecraft中聽到的每個聲音,肯定都包括有以下信息:

 ?、俾曇裘Q(在sounds.json[JE]或sound_definitions.json[BE]中所規(guī)定的聲音名稱。下面會詳細講一下這東西怎么弄到。)

  ②聲音類別(按照Minecraft內(nèi)的分類來分)

 ?、勐曇裟繕耍ㄟ@個聲音給誰聽,也就是能夠被哪些玩家聽到,是一個目標選擇器或玩家名、UUID)

 ?、苈曉次恢茫曇舢a(chǎn)生的地點,是一個坐標)

 ?、菀袅浚ㄒ袅吭酱螅曇艨陕劮秶酱?,是一個小數(shù)。下面會詳細講解這東西)

 ?、抟粽{(diào)(自己把物理書或樂理書拿出來翻一下看看,是一個小數(shù)。下面也會詳細講解這東西)

 ?、咦钚∫袅浚ㄖ付ㄔ诼曇艨陕劮秶獾淖钚∫袅?,是一個小數(shù)。下面也會詳細講解這東西)

  其中,我們需要詳細講解的東西有四個:聲音名稱、音量、音調(diào)和最小音量。

  ——1.聲音名稱

  在上面有提到,聲音名稱是在一個叫做sounds.json[Java版]或sound_definitions.json[基巖版]的文件中規(guī)定的。那么這個文件在哪呢?

  想要找到這個文件可是個技術(shù)活,如果你嫌麻煩可以去看Minecraft Wiki,我們會在章末討論如何找到這個東西。在此之前,你只需要在Minecraft Wiki上查找聲音名稱即可。

  ——2.音量

  聲音的音量在這里并不只是影響聲音的響度。音量是一個≥0.0的小數(shù)(浮點數(shù))。音量對聲音的影響有兩種情況:

  ①當0.0≤音量<1.0時

  音量越小,聲音響度會相對減輕,直到完全沒有(0.0)。聲音的球狀可聞范圍也會相應(yīng)減小一些。

 ?、诋斠袅俊?.0時

  聲音響度會不變,但其可聞范圍和音量大小的關(guān)系符合下面的函數(shù)關(guān)系式:

  可聞范圍(單位:米)=音量×16

  比如音量為1.2時,該聲音的可聞范圍就是1.2×16=19.2米。

  另外,我們還要了解一下聲音的可聞范圍:

  聲音的可聞范圍是一個球體,其中心就是聲源位置。越遠離中心,聲音的大小就會越小,直至無聲。

  ——3.音調(diào)

  音調(diào)是什么?物理學對音調(diào)的定義是:聲音頻率的高低叫做音調(diào)。在Minecraft中雖然有些不同,但也跟聲音頻率有關(guān)。

  這個東西要深究起來非常復雜,在這里我們簡簡單單了解一下。

  音調(diào)的值是個小數(shù)(浮點數(shù)),在Java版中是一個在0.0~2.0(含)范圍內(nèi)的數(shù),其對聲音的影響可以分為兩種情況:

  ①當0.0≤音調(diào)<0.5

  等同于音調(diào)值為0.5的情況

 ?、诋?.5≤音調(diào)≤2.0

  音調(diào)越低,聲音的頻率越低,持續(xù)時間越長。

  音調(diào)越高,聲音的頻率越高,持續(xù)時間越短。

  音調(diào)等于1.0時,聲音的頻率和持續(xù)時間均為正常水平。

  (如果你并不能很好理解上面的描述,那我就舉個例子:當你在觀看視頻的時候,如果你加快播放速度,聲音的波就會擠在一起,頻率變高,使得視頻的聲音變得尖銳,而如果你放慢速度,聲音的波反而會離得更開,頻率變低,使得視頻的聲音變得低沉。當然,現(xiàn)在諸如B站之類的視頻平臺大多都對倍數(shù)播放添加了優(yōu)化,使得視頻變快或變慢不會影響到視頻音調(diào)的改變,但你還是可以在諸如PR之類的視頻剪輯軟件中體驗到這種效果)

 ?。ㄒ簿褪钦f,從某種意義上來講,這個音調(diào)的作用其實就是讓你像看B站視頻一樣倍數(shù)播放聲音,只不過沒有優(yōu)化聲音頻率的效果而已)

  在基巖版中,其值并沒有任何限制,但必須要在0.0至256.0(含)之間才能有效果。如果大于256.0,最終的情況相當于音調(diào)等于1.0的情況,也就是默認情況。如果小于等于0.0,聲音將會不可聽見。

  值在0.0至256.0之間的效果類似于Java版在0.5和2.0之間的效果。

  ——4.最小音量

  前面我們講音量時提到了可聞范圍,默認情況下聲音會在可聞范圍之外不可聽見。為什么要說一個『默認情況』呢?因為默認情況下聲音的最小音量的值是0.0。

  上面我們了解過,聲音的最小音量是指在聲音可聞范圍外的最小音量,是個小數(shù)(浮點數(shù)),默認為0.0,也就是不可聽見。在基巖版中此值無限制,可正也可負,在Java版此值必須在0.0~1.0(含)之間。

  ……………

  現(xiàn)在我們已經(jīng)講了很多,但了解這些東西有什么用呢?難不成我們可以用指令來控制游戲聲音?

  答案當然是能啦,不然我寫這個章節(jié)干嘛?

  Mojang為Minecraft添加了兩條聲音相關(guān)的指令:/playsound和/stopsound

  /playsound

  作用:播放一段聲音

  需要權(quán)限等級:Java-2,基巖-1

  需要作弊:是

  格式:

  Java版

  /playsound <聲音名稱><類別><目標:目標選擇器>[聲源位置:坐標][音量][音調(diào)][最小音量]

  基巖版

  /playsound <聲音名稱>[目標:目標選擇器][聲源位置:坐標][音量][音調(diào)][最小音量]

  看起來這/playsound指令參數(shù)很多啊,但如果你仔細一瞧,就會發(fā)現(xiàn)這些參數(shù)我們上面都講過了。

  其中我們唯一要講的就是『類別』這個參數(shù)。類別有哪些呢?讓我們來看看前文是怎么說的:『聲音類別(按照Minecraft內(nèi)的分類來分)』

  那么Minecraft內(nèi)部對聲音的分類有哪些?

  其實已經(jīng)寫在了開頭:『主音量(master)、音樂(music)、唱片機/音符盒(record)、天氣(weather)、方塊(block)、敵對生物(hostile)、友好生物(neutral)、玩家(player)、環(huán)境(ambient)、聲音/語音(voice)』

  懂了吧,那么我們現(xiàn)在來看一個例子。

  假設(shè)你要播放出洞穴的環(huán)境音效,該怎么辦?

  第一步,你需要打開Minecraft中文Wiki,搜索sounds.json,找到這個叫做sounds.json的條目(或者找到環(huán)境音效這個條目也可以)。第二步,往下拉找到數(shù)據(jù)值,根據(jù)你對應(yīng)的游戲版本點擊展開,往下滑并看著『聲音事件』這一列,找到洞穴環(huán)境音效的聲音事件名稱(也就是聲音名稱),復制。第三步,在Minecraft里運行如下指令:

  /playsound ambient.cave ambient @a ~~~ 1.0 1.0 0.0 ——Java

  /playsound ambient.cave @a ~~~ 1.0 1.0 0.0 ——基巖

  然后你就聽到了和你在洞穴里聽到的一模一樣的聲音。但是如果你多次播放就會發(fā)現(xiàn)一個問題:怎么每次播放都是不同的聲音?。?p>  其實一個聲音名稱對應(yīng)的不只是一個聲音文件,像是ambient.cave這個名稱對應(yīng)的就有19個聲音文件。游戲在播放ambient.cave這個聲音時其實會在這19個聲音中點兵點將點到誰就播放誰,播放的具體是哪個其實完全是隨機的。當然,雖然說是隨機,但游戲也有規(guī)定權(quán)重在其中,哪個聲音文件權(quán)重大就有更高幾率抽到那個聲音。

  /playsound是播放聲音,相對應(yīng)就還有一個/stopsound用來停止播放聲音。

  /stopsound

  作用:停止聲音播放。

  需要權(quán)限等級:Java-2,基巖-1

  需要作弊:是(Java版不需要)

  格式:

  Java

  /stopsound <玩家:目標選擇器>[聲音類別][聲音名稱]

  基巖

  /stopsound <玩家:目標選擇器>[聲音名稱]

  玩家這個參數(shù)在這邊用于指定要停止誰的聲音,也就是讓誰聽不到聲音。

  如果僅僅指定了玩家,將會停止該玩家所聽到的所有(游戲中的)聲音,也就是讓這個玩家的耳朵突然安靜下來。你也可以額外指定聲音類別和聲音名稱兩個參數(shù),來指定具體要停止什么聲音。

  舉個例子:

  /stopsound @a block entity.tnt.primed ——Java

  /stopsound @a random.fuse ——基巖

  這兩條指令都將會停止TNT嘶嘶作響的聲音。

  看起來上面的指令沒有絲毫的問題,但僅僅是看起來而已。

  如果我們不知道entity.tnt.primed屬于哪個聲音類別怎么辦?畢竟Wiki上可沒有標出這個的類別。

  答案很簡單,我們只需要:

  /stopsound @a * entity.tnt.primed

  不去管就行了!管它干什么?!多管閑事啊?浪費精力又浪費時間。

  當你不知道也懶得知道你要停止的聲音的類別是什么的時候,可以直接選擇填寫星號來全選全部聲音類別。可惜的是,這個版本在低版本行不通(1.12.2就沒有這東西,還得老老實實找類別)。

  現(xiàn)在我們已經(jīng)基本上了解得差不多了,如果你認為可以了就前往下一章或去干其他事情吧,接下來我們將會討論:如何找到那該死的sounds.json。

  對于Java版,我們首先需要來到Minecraft的根目錄,也就是找到.minecraft文件夾。對于非官方啟動器來說,一般它和啟動器位于同一個目錄下;對于官方啟動器來說,不同系統(tǒng)的情況不一樣:

  Windows:系統(tǒng)盤\用戶(User)\你的用戶名\AppData(這是個隱藏文件夾)\Roaming\.minecraft\

  Mac OS:系統(tǒng)盤/用戶(User)/你的用戶名/資源庫(Library)/Application Support/minecraft/

  Linux:系統(tǒng)盤/你的用戶名/.minecraft/

  注:在Mac OS中,你默認是看不到資源庫(Library)這個文件夾的。這時候你就要確保此時訪達正選擇你的用戶文件夾,然后點擊左上方的前往→前往文件夾,然后在跳出的窗口中輸入『資源庫』或『Library』三個字,就可以臨時顯示出這個文件夾了。

  然后,我們需要來到如下的位置:

  .minecraft/assets/indexes/或minecraft/assets/indexes/

  在這里,你會發(fā)現(xiàn)一堆名稱是.json的文件。這是什么東西呢?

  你不用管他,也不需要管它是什么東西,用記事本或文本編輯打開你需要的版本即可。打開后,使用Ctrl+F或Command?+F開啟查找模式,然后輸入sounds.json,你就會找到一個唯一的結(jié)果:“minecraft/sounds.json“:{“hash“:“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx“,“size“: xxxxxx}

  是不是感覺這似乎在哪里見過?其實這就是JSON,和之前講過的JSON文本的格式是一模一樣的。

  接下來,你需要將hash的值復制下來,然后來到如下文件夾:

  .minecraft/assets/objects/或minecraft/assets/objects/

  你會看到一大堆不明意義的文件夾,不用擔心,直接使用搜素功能,搜索你剛剛復制的內(nèi)容,稍等片刻,你就會找到一個文件名和你復制內(nèi)容一模一樣的文件。雖然它沒有后綴名,但其實它就是我們要找的sounds.json文件。右擊使用記事本或文本編輯打開它,如果你找對的話,你就會看到開頭寫著:

  {

  “ambient.cave“:{

  “sounds“:[

  “ambient/cave/cave1“,

  “ambient/cave/cave2“,

  …….

  如果你的訪達或文件管理器遲遲找不到文件,那也別擔心,你只需要看看你復制內(nèi)容的開頭兩個字符,然后找到相對應(yīng)的文件夾。比如開頭是『97』就找叫做97的文件夾,找到后,你再仔細翻一翻就可以找到了。

  sounds.json的JSON結(jié)構(gòu)大致是這樣的:

  {“聲音名稱”:{“聲音文件”:[聲音文件列表],”聲音字幕本地化鍵名”:”一個本地化鍵名”},……}

  懂了吧?當然,sounds.json只是在1.7.2版本后才被弄到如此離譜的地方。在1.7.2版本,sounds.json很好找,它就在這里:

  .minecraft/ assets/或.minecraft /virtual/legacy/

  而且文件名就叫sounds.json

  如果你同時安裝了1.7.2和更新的版本,那么兩類sounds.json文件都將會同時存在。

  (那對于比1.7.2更老的版本呢?)

 ?。ǜ静挥谜?,因為沒有sounds.json。這東西是在1.7.2才被添加進來的)

  另外,對于Java版的資源包來說,其也有sounds.json文件,就在資源包的/assets/<命名空間>/下,且就叫sounds.json。

  sounds.json找到了,那么基巖版的sound_definitions.json在哪呢?

  很好找……….個屁!但至少沒有那么多彎彎繞繞的。

  對于Windows10版本來說,你需要找到:

  系統(tǒng)盤:\Program Files\WindowsApps\Microsoft.MinecraftUWP_應(yīng)用版本號_x64__8wekyb3d8bbwe\data\resource_packs

  打開resource_packs,你會發(fā)現(xiàn)里面有一大堆叫做vanilla_<游戲版本>的文件夾。不用管這些,你只需要找到?jīng)]有后綴的『vanilla』文件夾,點進去,再找到sounds文件夾,再向下滑,就是sound_definitions.json文件了。整個目錄下來是這樣的:

  C:\Program Files\WindowsApps\Microsoft.MinecraftUWP_應(yīng)用版本號_x64__8wekyb3d8bbwe\data\resource_packs\vanilla\sounds\sound_definitions.json

  對于Android版本來說,最簡單的辦法是安裝一個MT管理器,然后將你手機上的Minecraft打包成安裝程序apk文件,然后再使用MT管理器通過zip視圖打開,再打開split_install_pack.apk,來到assets/resource_packs/vanilla/sounds,就可以找到sound_definitions.json了。

  對于IOS和其他版本來說…….抱歉,我不清楚。

  現(xiàn)在我們兩個文件都找到了,本章也就到此結(jié)束。

  歷史

  Java

  1.6.1——加入了/playsound

  1.7.2——加入了sounds.json

  1.9——/playsound支持Tab自動補全了,并開始要求使用source參數(shù)。更改了許多聲音名稱。

  1.9.3——加入了/stopsound

  攜帶版

  1.0.4——加入了sound_definitons.json

  1.0.5——加入了/stopsound和/playsound

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進入下一章  按 “空格鍵” 向下滾動
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁
返回書頁
指南