小屋創作

日誌2012-01-07 00:22

【RGSS/Ruby】不太專業的BGS遠近音量控制效果

作者:解凍豬腳


#======================================================
# BGS遠近音量控制效果 by 解凍豬腳
#------------------------------------------------------
# MaxVolume : BGS最大音量
# Reduce : 距離音量差值
# Mute : 靜音範圍(離事件>=Mute則音量會被降到最小)
#======================================================
MaxVolume = 100
Reduce = 8
Mute = 7

class Game_Event < Game_Character
attr_reader :name
attr_reader :erased
alias tubobo_initialize initialize
def initialize(map_id, event)
tubobo_initialize(map_id, event)
@name = @event.name
end
end

class Scene_Map
alias tubobo_bgs update
def update
tubobo_bgs
plx = $game_player.x
ply = $game_player.y
for event in $game_map.events.values
if event.name.length > 5
if event.name[0,5].downcase == "@bgs="
evx = event.x
evy = event.y
len = Math.hypot(plx-evx,ply-evy)
bgs = event.name[5,event.name.length-5]
bgsvolume = MaxVolume
if len <= Mute * 0.1 and len < Mute * 0.2
bgsvolume -= Reduce * 0.5
elsif len <= Mute * 0.2 and len < Mute * 0.3
bgsvolume -= Reduce * 1.0
elsif len <= Mute * 0.3 and len < Mute * 0.4
bgsvolume -= Reduce * 1.7
elsif len <= Mute * 0.4 and len < Mute * 0.5
bgsvolume -= Reduce * 2.2
elsif len <= Mute * 0.5 and len < Mute * 0.6
bgsvolume -= Reduce * 2.7
elsif len <= Mute * 0.6 and len < Mute * 0.7
bgsvolume -= Reduce * 3.3
elsif len <= Mute * 0.7 and len < Mute * 0.8
bgsvolume -= Reduce * 3.8
elsif len <= Mute * 0.8 and len < Mute * 0.9
bgsvolume -= Reduce * 4.3
elsif len <= Mute * 0.9 and len < Mute * 1.0
bgsvolume -= Reduce * 4.9
else
bgsvolume = 0
end
if bgsvolume > 0
Audio.bgs_play("Audio/BGS/" + bgs, bgsvolume, 100)
elsif bgsvolume < 0
Audio.bgs_play("Audio/BGS/" + bgs, 1, 100)
end
end
end
end
end
end

class Game_Map
alias tubobo_atp autoplay
def autoplay
Audio.bgs_stop
tubobo_atp
end
end

上次忽然有靈感,就寫了這個腳本。

不過礙於系統無法同時播放兩個以上的BGS,

所以這個腳本使用上會有一點限制……

我先說明一下這三個變數的用法:

MaxVolume:這個是離物件最近時所播放的BGS音量。

Reduce:距離音量差值--
     這個比較難解釋,總之調高了,每遠離物件(音量降低一次)的降低量會提升;
     反之則降低量會變小。

Mute:假設這個變數的值是N。這個值越大,每次的音效降低量會越小(與Reduce相反);
   另外只要你和該物件的距離不小於N,音量就會被降到某個程度而不再改變。

以上三個設定都看不懂嗎?

那我大略的說一下這個腳本的功能:

這個腳本的功用在於,

如果你想要設定成「離某樣會發出聲音的東西越近,它的音量就越大」,

那就是使用這個腳本。

但是這個腳本的使用限制就是:

如果你同時設定兩個會發出聲音的東西,它們的距離至少要保持在2*Mute的距離,

以免造成疊音、遊戲卡住的問題。

設定方式:

在地圖上面你要設定聲音的位置放一個事件,

名稱為 @bgs=BGS名稱 (副檔名可有可無) 就可以了。

通常Reduce與Mute的量越大就越逼真(兩個一起調高才能更逼真),

但是Mute的量越大,自動播放BGS的事件之間的距離要加大(距離至少2Mute);

要是不懂得怎麼設定,用預設值也可以。



以上這些說明,我自己也看得一頭霧水

但有了範例工程應該不至於太複雜才對。

5

0

LINE 分享

相關創作

【上古卷軸 Online】主線劇情:1. 我也是詐騙集團的受害者啊

【原創】虐爛FPS新手的我竟遭約出現實快打!?㉟

V Rising 伺服器宣傳

留言

開啟 APP

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】