Minecraft基岩版的音效檔案都寫在
原版資源包的sounds.json
和sounds/sound_definition.json
中。了解這二個檔案的運作原理,不只能修改原本遊戲的音效,也能加入新音效。
下面以給新增的實體添加音效為例子,方塊的參考 這篇文章。
sounds.json
檔案是定義有哪些要使用的音效,這裡幾乎是寫死的。
每個實體定義的方法如下,物件“entities”裡面,寫上實體的identifier,例如kanmusu:boku,volume是音量,pitch是音高。在“events”裡面的就是設定各個事件要觸發的音效,這裡必須按照遊戲給的寫,前面的代表的是遊戲事件,如ambient就是剛召喚出來的音效,hurt就是受傷音效,attack是近身攻擊的音效,shoot是遠程攻擊,還有idle、step等,或者自己寫一個也可以,可是遊戲就不會自動播放。
後面的值就是音效名稱,等會要在sound_definitions.json
用到。這裡格式通常會寫成「生物名.音效名」
{
"entity_sounds": {
"entities": {
"kanmusu:boku": {
"volume": 4,
"pitch": [
1,
1
],
"events": {
"ambient": "boku.say",
"hurt": "boku.hurt",
"death": "boku.death"
}
}
}
}
}
- 接著把剛才第一步定義的音效寫出音效檔案的具體路徑。跟剛才不太一樣的是,一個實體的每個音效都要分開定義,例如這裡hurt和death的音效各成一個物件。
“category”設定的是音效的種類,有weather、hostile、neutral等。
“sounds”後面的陣列裡面寫出音效的檔案位置,如此以來可以添加多個音效,遊戲會隨機播放裡面列出來的清單,例如"hurt"我就用了3種音效。
另外可以設定"sound_distance"來設定音效能被聽到的最大距離。
Minecraft的音效檔案一律要用.ogg格式,寫出檔案位置時不用標注副檔名。
{
"format_version": "1.14.0",
"sound_definitions": {
"boku.say": {
"max_distance": 10.0,
"category": "neutral",
"sounds": [
"sounds/mob/boku/say",
"sounds/mob/boku/say2"
]
},
"boku.hurt": {
"max_distance": 10.0,
"category": "neutral",
"sounds": [
"sounds/mob/boku/hurt",
"sounds/mob/boku/hurt2",
"sounds/mob/boku/hurt3"
]
},
"boku.death": {
"max_distance": 10.0,
"category": "neutral",
"sounds": [
"sounds/mob/boku/death"
]
}
}
}
由於上面新增的音效都是遊戲原本就有的行為,因此當這個實體受傷或攻擊時就會自動播放音效,或者用於組件音效。
用Blockbench製作動畫時,可在畫格中插入音效與 粒子效果。
也可以在資源包使用動畫控制器,在轉場時設定播放音效。
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.boku.move": {
"states": {
"default": {
"animations": [
{
"moving": "query.modified_move_speed"
}
],
"sound_effects": [
{
"effect": "ambient"
}
]
}
}
}
}
}
遊戲中要強制播放特定音效使用/playsound指令,例如要播放上面新增的boku的死亡音效,就使用playsound指令:
/playsound boku.death @p ~ ~ ~ 1 1 1