游戏中的声音

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

除了背景音乐外,游戏音频可以增强玩家的体验。 此教程将涵盖两种游戏音效: 位置反馈 音效。

对于第一个例子,您将为瀑布创建一个位置声音。 在第二个例子中,脚本将用于当玩家触摸到收集物品时播放铃铛。

位置声音

当一个 声音 对象与一个部件或附件相关时,它会变成位置。音频从其位置发出,随着玩家靠近,在这个瀑布中的情况就越来越大。

创建一个声音

  1. 在任何所需的部分上,创建一个名为 WaterfallSound 的新 声音 对象。

  2. 在属性中,找到 SoundId 并将其更改为此瀑布环境: rbxassetid://6564308795

  3. 开始游戏时,切换 播放循环 来成为 开启 .

  4. 测试游戏以确认您听到瀑布的水景。

调整音效距离

测试时注意,音频即时播放,即使玩家远离对象。 使用卷轴属性,您可以修改玩家听到声音的距离,以创建渐变效果。

  1. RollOffMaxDistance 变更为 30 。 此属性用钉子表示。

  2. 对于更平滑的渐变,请将 RollOffMode 更改为 InverseTapered 。这使声音的接近感更加自然。

  3. 运行项目。注意声音只能在对象附近听到。

精确调整卷轴

根据您的需求,您可能需要调整不同的属性以实现特殊效果或提高现实主义。请参阅以下属性:

  • RollOffMinDistance - 最小距离(以格为单位) - 音量会下降。
  • SoundGroup - 用于调整和平衡音效之间的音量,例如背景音乐和游戏效果。

反馈声音

您可以使用脚本在命令中播放声音。 您可以将声音连接到事件,例如玩家触摸某个部件或与菜单交互。 在这里,您创建一个在玩家触摸可收集对象时播放铃铛的脚本。

设置收藏品

本教程的剩余部分使用预制模型。 此模型包括零件和脚本,以便玩家可以收集宝石。

  1. 在浏览器中,打开 收集可能宝石模型 页面,然后单击 获取 按钮。
  • 在 Studio 中,去到视图选项卡,然后单击工具箱。
  • 在工具箱窗口中,单击 物品栏 按钮。然后确保弹出菜单是在 我的模型 上。
  • 选择 可收集宝石 模型,将其添加到游戏中。
  1. SoundService 中,创建一个名为 FeedbackSound 的新 声音

  2. 在 FeedbackSound 中,将 SoundId 设置为 rbxassetid://4110925712 - 模型页面上下载的简单铃铛的声音ID。

设置脚本

  1. 新手玩家 > StarterPlayerScripts 中,创建一个名为 收集可声音效果 的新本地脚本。

  2. 下面的代码将在玩家触摸到可收集的任何地方时运行 partTouched 函数。复制代码到您的脚本。


    local pickupObjects = workspace.Collectables.Objects
    local objectsArray = pickupObjects:GetChildren()
    local function partTouched(otherPart, objectPart)
    local whichCharacter = otherPart.Parent
    local humanoid = whichCharacter:FindFirstChildWhichIsA("Humanoid")
    if humanoid and objectPart.CanCollide == true then
    end
    end
    -- 将每个对象零件绑定到触摸功能,以便在所有零件上都能使用
    for objectIndex = 1, #objectsArray do
    local objectPart = objectsArray[objectIndex]
    objectPart.Touched:Connect(function(otherPart)
    partTouched(otherPart, objectPart)
    end)
    end

播放声音

  1. SoundService 创建变量,然后为 存储反馈声音 的另一个变量。


    local pickupObjects = workspace.Collectables.Objects
    local objectsArray = pickupObjects:GetChildren()
    local SoundService = game:GetService("SoundService")
    local feedbackSound = SoundService:FindFirstChild("FeedbackSound")
    local function partTouched(otherPart, objectPart)
  2. 要播放铃铛,请找到函数 partTouched 。在 if 声明中,调用 feedbackSound:Play() 来播放声音。


    local function partTouched(otherPart, objectPart)
    local whichCharacter = otherPart.Parent
    local humanoid = whichCharacter:FindFirstChildWhichIsA("Humanoid")
    -- 播放声音,一旦完成,就删除对象
    if humanoid and objectPart.CanCollide == true then
    feedbackSound:Play()
    end
    end
  3. 测试游戏,确认当玩家触摸一个可收集物品时,它不仅会消失,还会发出声音。