じ☆ve冰风 发表于 2024-4-19 21:05:57

【不是创意的创意】BGM/BGS远小近大v1.0

#==============================================================================# BGM/BGS远小近大# 原作:沙漠点灰# 修改:精灵#==============================================================================#==============================================================================# ■ 设定部分# 所有设定部分都在这里。#==============================================================================module FAYBGM_DURATION = 5 #BGM的减弱距离(不能为0)BGS_DURATION = 4 #BGS的减弱距离(不能为0)BGM_VARIABLES = 3 #BGM音乐储存变量IDBGS_VARIABLES = 4 #BGS音乐储存变量IDBGM_MAX = 100   #BGM最大音量(默认)BGS_MAX = 80      #BGS最大音量(默认)BGM_DISTANCE = 2   #最大音量保持距离BGS_DISTANCE = 2   #最大音效保持距离end#==============================================================================# ■ Scene_Map#------------------------------------------------------------------------------#  处理地图画面的类。#==============================================================================class Scene_Mapalias _update update unless method_defined? :_update#--------------------------------------------------------------------------# ● 刷新画面#--------------------------------------------------------------------------def update    _update    check_bgm    check_bgsend#--------------------------------------------------------------------------# ● 检查BGM#--------------------------------------------------------------------------def check_bgm    if !($bgm or $game_map.events[$bgm_event_id])      if $bgm_stop      $game_system.bgm_restore      $bgm_stop = false      end    else    bgm_x = ($game_player.x - $game_map.events[$bgm_event_id].x)**2    bgm_y = ($game_player.y - $game_map.events[$bgm_event_id].y)**2    $bgm.volume = FAY::BGM_MAX + FAY::BGM_DISTANCE * 4 -   (Math.sqrt(bgm_x+bgm_y)).round*(100/FAY::BGM_DURATION)    $bgm.volume = 0 if $bgm.volume < 0    $bgm.volume = FAY::BGM_MAXif $bgm.volume > FAY::BGM_MAX   $game_variables = $bgm.volume    $game_system.bgm_play($bgm)    end    returnend#--------------------------------------------------------------------------# ● 检查BGS#--------------------------------------------------------------------------def check_bgs    if !($bgs or $game_map.events[$bgs_event_id])      if $bgs_stop      $game_system.bgs_restore      $bgs_stop = false      end    else    # 计算距离    bgs_x = ($game_player.x - $game_map.events[$bgs_event_id].x)**2    bgs_y = ($game_player.y - $game_map.events[$bgs_event_id].y)**2    $bgs.volume=FAY::BGS_MAX + FAY::BGS_DISTANCE * 4 -    (Math.sqrt(bgs_x+bgs_y)).round * (100/FAY::BGS_DURATION)    $bgs.volume = 0 if $bgs.volume < 0    $bgs.volume = FAY::BGS_MAX if $bgs.volume > FAY::BGS_MAX    $game_variables = $bgs.volume    $game_system.bgs_play($bgs)    end    returnendend#==============================================================================# ■ Interpreter (分割定义 8)#------------------------------------------------------------------------------#  执行事件命令的解释器。本类在 Game_System 类# 和 Game_Event 类的内部使用。#==============================================================================class Interpreter#--------------------------------------------------------------------------# ● BGM远小近大启动#--------------------------------------------------------------------------def bgm_d_start(bgm_id = self.instance_variable_get(:@event_id))    return if $bgm    $bgm_event_id = bgm_id    $bgm = $game_system.bgm_memorize.clone    return trueend#--------------------------------------------------------------------------# ●BGM远小近大关闭#--------------------------------------------------------------------------def bgm_d_stop    $bgm = nil    $bgm_event_id= nil    $bgm_stop = true    return trueend#--------------------------------------------------------------------------# ●BGS远小近大启动#--------------------------------------------------------------------------def bgs_d_start(bgs_id = self.instance_variable_get(:@event_id))    # 演奏 BGS    return if $bgs    $bgs_event_id= bgs_id    $bgs = $game_system.bgs_memorize.clone    return trueend#--------------------------------------------------------------------------# ●BGS远小近大关闭#--------------------------------------------------------------------------def bgs_d_stop    $bgs = nil    $bgs_event_id = nil    $bgs_stop = true    return trueendend复制代码使用方法:
开启此脚本:在需要的事件里写bgm_d_start(如果指定某事件就请带参数(bgm_start(你指定的事件ID))
关闭此脚本使用bgm_d_stop /bgs_d_stop(任意事件均可,回复默认的声音大小)
具体距离,使用变量等请在脚本设定部分设置
             本帖来自P1论坛作者YeYe.,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=248654若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页: [1]
查看完整版本: 【不是创意的创意】BGM/BGS远小近大v1.0