我最近开始编写一个程序来替换默认目录中的声音效果,在 Source-Engine Game ,Garry的Mod。
这是当前的代码:
function GM:PlayerFootstep( ply, pos, foot, sound, volume, rf )
ply:EmitSound("gear1")
return true
end
我希望发出多个.wav
音效,不会重叠,并随机选择。
我没有在互联网上找到任何有用的帮助,所以我采用了Stack Overflow。 我很感激对该主题的帮助。
答案 0 :(得分:0)
您想要查看file.Find功能。
我建议您使用自定义文件夹,例如sound/customsteps/
,您可以在其中放置所有自定义声音。我还建议对声音文件使用.wav
格式,但如果我没记错的话,其他一些可以正常工作(.mp3
和.ogg
。
在您的代码中,只需拨打local snds=file.Find( "sound/customsteps/*", "GAME" )
即可为您提供表格,然后您只需使用local snd=snds[math.random(1,#snds)]
从列表中选择一个随机的,然后按照您在上面的代码中进行播放 - {{ 1}}。
确保在ply:EmitSound(snd)
函数之外创建声音表,以便它只运行一次。我还建议预先清除所有声音。您可以通过遍历表并在其上调用GM:PlayerFootstep
来完成此操作,如下所示:
util.PrecacheSound(path)
所以,考虑到所有这些 - 你的最终代码应该是这样的:
for k,v in pairs(snds) do
util.PrecacheSound(v)
end