| 赞 | 46 |
| VIP | |
| 好人卡 | |
| 积分 | 329 |
| 经验 | |
| 最后登录 | 2026-2-3 |
| 在线时间 | 248 小时 |
- 梦石
- 24
- 星屑
- 8942
- 在线时间
- 248 小时
- 注册时间
- 2020-12-4
- 回帖
- 259
  
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
本帖最后由 纯属小虫 于 2023-6-7 17:46 编辑
最近玩了玩unity,找到了点儿启发,随手写了个跟音频相关的脚本
感觉做一些跟声音有关的场景还是很好用的
(想到了黑魂一塞恩古城前的铁匠,叮——叮——叮——)
[fold=空间音频]=begin
================================================================================
by 纯属小虫
学了unity之后,对其空间音效很感兴趣,于是试着写了一个2D的空间音效
当然,暂时没法实现立体音,只能实现随着距离变化的音量变化
用于播放音量会随主角位置变化的音效
================================================================================
●用法:
通常将脚本写入事件的【移动设置】里: 注意数据类型!
audio_空间(【音频名称】,【音频类型】 , 【距离变化区间】, 【音量变化区间】,【音调】)
如果想要bgm的音量持续改变的话,则要让该脚本也周期性执行!
================================================================================
●参数详情:
audio_空间(【音频名称】,【音频类型】 , 【距离变化区间】, 【音量变化区间】,【音调】)
【音频名称】
bgm 的名称的字符串 ————————不要后缀 不要后缀 不要后缀!!!
【音频类型】
"bgm","bgs","se","me" 默认为 "se"
如果音频类型为 bgm 或 bgs 时
【距离变化区间】
两个数的数组,左边为最小距离,右边为最大距离 默认值为[1,10]
当距离小于最小值时,音量将维持最大;
当距离大于最小值时,音量将维持最小;
当居中时根据距离改变音量
【音量变化区间】
两个数的数组,左边为最小音量,右边为最大音量,默认值为[0,100]
【音调】
定值,不会随距离变化
默认值为 100
=end
class Game_Event
def audio_空间(name , type = "se", distance_section = [1,10], volume_section = [0,100] ,pitch = 100)
# 纠错
unless ["bgm","bgs","se","me"].include?(type)
p "空间音效的 type 参数存在错误"
return
end
# 获取该事件相对主角的距离
distance = ((self.x - $game_player.x).abs ** 2 + (self.y - $game_player.y).abs ** 2) ** (1.0 / 2)
# 音量大小计算
if distance < distance_section[0]
volume = volume_section[1] #小于最小判定距离时,用最大音量
elsif distance > distance_section[1]
volume = volume_section[0] #大于最大判定距离时,用最小音量
else
# 距离位于区间内时,进行计算映射音量
precent = 1.0 - (distance - distance_section[0])/(distance_section[1] - distance_section[0])
volume = (volume_section[1] - volume_section[0]) * precent + volume_section[0]
volume = volume.to_i
end
# 不同类型的音效播放的情况
audio = RPG::AudioFile.new(name , volume ,pitch)
if type == "se"
$game_system.se_play(audio)
elsif type == "me"
$game_system.me_play(audio)
elsif type == "bgm"
$game_system.bgm_play(audio)
elsif type == "bgs"
$game_system.bgs_play(audio)
end
end
end
[/fold]

但是如果音频码率较高,或者音频选择的是BGM的话,频繁地操作 Audio play ,会严重影响流畅性。
(如果Audio类里面有直接修改正在播放的bgm的音量的方法就好了)
不知道如果兼容于RGM之后,是否能够提高其性能。
悄咪咪地艾特一下加菲大佬~~~
@ guoxiaomi |
|