Añadir sonido, audio3D

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

3D audio es sonido direccional que emite desde una ubicación específica en el espacio 3D, aumentando o disminuyendo el volumen dependiendo de la distancia y la orientación entre el emisor de audio y el receptor.Esto significa que mientras los receptores o emisores se mueven por el entorno, ambiente, los jugadores pueden escuchar dinámicamente ese audio de diferentes direcciones y niveles de volumen.

Usando el archivo Gingerbread House - Start.rbxl como lugar de inicio y Gingerbread House - Complete Audio como referencia, este tutorial te muestra cómo agregar tanto audio de bucle como un disparo 3D a tus experiencias, incluyendo instrucciones sobre:

  • Reproducir sonidos ambientales que se reproducen tan pronto como los jugadores se conectan al servidor.
  • Activar audio para informar a los jugadores sobre eventos situacionales clave que son importantes para su juego.
  • Activar audio para proporcionar comentarios auditivos a los jugadores cuando interactúan con objetos 3D.
  • Reproducir bocadillos de sonido de personajes que implican y guían a los jugadores hacia puntos de interés dentro de su entorno, ambiente.

Si en algún momento te quedas atascado en el proceso, puedes usar Casa de jengibre - Audio completo como referencia para comparar tu progreso.

Objetos de audio

Para crear sonido, audiodireccional, es importante comprender los objetos de audio con los que trabajarás a lo largo de este tutorial.Hay seis tipos principales de objetos de audio:

  • El objeto AudioPlayer carga y reproduce el archivo de audio .
  • El objeto AudioEmitter es un orador virtual que emite audio en el entorno, ambiente3D.
  • El objeto AudioListener es un micrófono virtual que recoge audio del entorno, ambiente3D.
  • El objeto es un dispositivo físico de hardware dentro del mundo real, como un altavoz o auriculares.
  • El objeto AudioDeviceInput es un micrófono físico dentro del mundo real.
  • Wires llevar flujos de audio de un objeto a otro.

Todos estos objetos de audio trabajan juntos para emitir sonido al igual que sus contrapartes del mundo real.Echemos un vistazo a cómo esto funciona en la práctica usando un ejemplo de un jugador que usa auriculares mientras juega una experiencia con su portátil:

  • El AudioPlayer carga el audio assetID 1516791621 en la experiencia para una pista lluviosa.
  • El AudioEmitter emite un flujo del audio de la pista de lluvia en el entorno, ambiente3D.
  • Un Wire lleva la transmisión desde el AudioPlayer al AudioEmitter para que la transmisión salga del bocina3D.
  • La lista de objetos del hijo del personaje AudioListener escucha ese sonido dentro del entorno 3D y lo devuelve a su visor.
  • El objeto AudioDeviceOutput lleva el sonido desde el AudioListener al bocinafísico del jugador, o en este caso, sus auriculares.
  • El objeto AudioDeviceInput captura sonido del mundo real y lo devuelve a la experiencia para el chat de voz.
Representaciones de objetos dentro de la experiencia
Representaciones de objetos en el mundo real

Las siguientes secciones se adentran más y se refieren a estos objetos a medida que aprendes cómo reproducir tanto sonido, audiode bucle como de un disparo en 3D.A medida que revisas estos objetos con las técnicas próximas, puedes predecir más precisamente cómo capturar y alimentar el sonido de la experiencia al jugador y viceversa.

Reproducir sonido, audioen bucle

Repetición de audio 3D en bucle , o audio direccional que se repite sin problemas tan pronto como los jugadores se conecten al servidor, es una técnica común de diseño de sonido para mejorar la atmósfera del espacio 3D haciéndolo sentir vivo y dinámico.Además, repetir el audio 3D mantiene tus fuentes de sonido ambiental consistentes, como el estático de una televisión o el rugido de una cascada; si estos sonidos se detuvieran repentinamente, el entorno se sentiría poco realista.

Para demostrar este concepto, revisa cómo el siguiente audio 3D para dos cascadas grandes se detiene tan pronto como la pista de audio desbloqueada esté completa.Si bien el agua suena inicialmente inmersa a los jugadores en el entorno, ambienteal aire libre, el cambio auditivo repentino es desagradable y antinatural para cómo una cascada se comporta en el mundo real.

Del mismo modo, la muestra utiliza esta técnica para la cascada de agua de chocolate fluyente y ajusta su volumen según la distancia del jugador del emisor de audio.Cuando el jugador está a menos de 20 metros de distancia, el emisor emite el sonido a volumen completo.A medida que el jugador se aleja más, el audio de salpicadura disminuye en volumen cada 20 espárragos alejados del emisor de audio.Esto emula el sonido del mundo real que disminuye en volumen a medida que te alejas de la de origen.

Para recrear el audio de bucle 3D en la muestra Casa de jengibre - Audio completo lugar de archivo:

  1. Habilita un escuchador predeterminado que está asociado al personaje jugador.

    1. En la ventana Explorador , seleccione el Servicio de sonido .
    2. En la ventana Propiedades , establece DefaultListenerLocation a Personaje .Cuando ejecutas la experiencia, el motor automáticamente:
      • Crea un AudioListener debajo de cada personaje de jugador Humanoid.RootPart para que puedas escuchar cambios de sonido en tus altavoces del mundo real de acuerdo con la posición y la escala de las fuentes de sonido dentro de la experiencia.
      • Crea un AudioDeviceOutput bajo Servicio de sonido .
  2. En la ventana Explorador , navegue a Espacio de trabajo > WaterfallAudioObject , luego:

    1. Inserta un objeto Reproductor de audio para crear una fuente de audio para la cascada.
    2. Inserte un objeto Emisor de audio para emitir un flujo posicional desde WaterfallAudioObject .
    3. Inserta un objeto Cable para llevar el flujo desde el reproductor de audio al emisor de audio.
  3. Seleccione el Reproductor de audio , luego en la ventana Propiedades ,

    1. Establece AssetID a rbxassetid://1516791621 para reproducir una pista de audio lluviosa.
    2. Habilita Repetición en bucle para que el audio se repita sin problemas.
  4. Seleccione el Emisor de audio , luego en la ventana Propiedades , establezca DistanceAttenuation a {0: 1}, {20: 0.8}, {40: 0.4}, {80: 0} para que el sonido disminuya progresivamente en volumen cada 20 espárragos alejados del emisor de audio.

  5. Seleccione el Alambre , luego en la ventana Propiedades ,

    1. Establece SourceInstance a tu nuevo reproductor de audio para especificar que quieres que el cable lleve audio desde este jugadorde audio específico.
    2. Establece TargetInstance a tu nuevo Emisor de audio para especificar que quieres que el cable lleve audio a este emisor de audio específico dentro de la cascada.
  6. De vuelta en la ventana Explorador , inserta un Script en WaterfallAudioObject , renómlalo LoopWaterfallMusic , establece su propiedad RunContext a Cliente y luego pega el siguiente código en el script:


    local audioPlayer = script.Parent
    audioPlayer:Play()

    El script comienza declarando una variable para representar al padre del script AudioPlayer .El script luego establece la fuente de audio para reproducirse desde el momento en que el jugador se une a la experiencia hasta el momento en que sale de la experiencia.

  7. Prueba la experiencia para escuchar el sonido de lluvia de chocolate en bucle cuando tu avatar está cerca de la cascada.Cuando giras la cabeza de tu personaje para mirar en una dirección diferente, el sonido cambia dinámicamente en los altavoces de tu mundo real según la posición del emisor en el espacio 3D.

sonido, audiode un disparo

Un disparo de audio 3D , o audio direccional que se reproduce una vez en un momento y posición específicos a menos que un jugador lo active nuevamente, proporciona contexto a los jugadores sobre sus acciones, el entorno, ambientey cualquier personaje alrededor de ellos.Usar este tipo de retroalimentación auditiva en tus experiencias es esencial porque permite que los jugadores tomen decisiones estratégicas como evitar a los enemigos entrantes o recoger objetos útiles.

Las siguientes secciones proporcionan detalles de implementación para escenarios de juego comunes en los que los jugadores necesitan opiniónoportunos y dirigidos, incluidos eventos de juego situacionales, la interacción de objetos y el diálogo de personajes no jugables.

Comentarios sobre opinión

A medida que los jugadores activan eventos situacionales clave dentro de su entorno, ambiente, como desbloquear nuevas áreas de juego o solicitar desencadenarenemigo, es esencial que entiendan dónde en el espacio 3D deben dirigir su enfoque y atención.Si no reciben opiniónauditiva inmediata, pueden perder información que es importante para su juego, lo que lleva a la frustración de no saber a dónde ir o qué hacer a continuación.

Para demostrar por qué esto es importante, revisemos el audio 3D de un disparo de la plantilla Etiqueta láser que se reproduce desde el bláster de cada jugador:

  • Un sonido de pop profundo se reproduce por cada explosión que dispara el jugador desde su bláster.
  • Un sonido de clic y robótico beep se reproduce cada vez que el jugador recarga su bláster con una nueva ronda.

Ambos sonidos proporcionan conciencia situacional alertando a todos los jugadores cercanos de la dirección de donde provienen las explosiones para que puedan tomar decisiones informadas de unirse a la diversión o evitar el peligro potencial.

La muestra utiliza esta misma técnica para proporcionar a los jugadores conciencia situacional sobre su recompensa por completar el objetivo principal dentro de la experiencia.Después de que recojan las tres gotas de goma, la puerta de la casa de jengibre se abre para permitir que los jugadores accedan al presente en el interior.

Debido a que no hay un pedido específico que los jugadores deban recolectar las gotas de goma, es importante que los jugadores estén conscientes de la apertura de la puerta sin importar qué gota de goma recojan última.El sonido posicional hace esto posible para que los jugadores estén conscientes de su éxito y de dónde deben ir a continuación, independientemente de su distancia y dirección relativa con respecto a la puerta.

Para recrear el audio de comentarios del evento de un disparo en 3D en el archivo de muestra Casa de jengibre - Audio completo:

  1. En la ventana Explorador , navegue a Espacio de trabajo > Puerta , luego:

    1. Inserta un objeto Reproductor de audio para crear una fuente de audio para el volumen.
    2. Inserta un objeto Emisor de audio para emitir un flujo posicional desde Puerta .
    3. Inserta un objeto Cable para llevar el flujo desde el reproductor de audio al emisor de audio.
  2. Seleccione el Reproductor de audio , luego en la ventana Propiedades , establezca ID de activo a rbxassetid://5930776613.

  3. Seleccione el Alambre , luego en la ventana Propiedades ,

    1. Establece SourceInstance a tu nuevo reproductor de audio para especificar que quieres que el cable lleve audio desde este jugadorde audio específico.
    2. Establece TargetInstance a tu nuevo Emisor de audio para especificar que quieres que el cable lleve audio a este emisor de audio específico dentro del volumen.
  4. De vuelta en la ventana Explorador , navegue hasta ServerScriptService , luego insira un script , renómbrelo GumdropService , establezca su propiedad RunContext en Servidor , luego pegue el siguiente código en el script:


    -- Inicialización de variables
    local Workspace = game:GetService("Workspace")
    local Players = game:GetService("Players")
    local ServerStorage = game:GetService("ServerStorage")
    local TweenService = game:GetService("TweenService")
    -- Módulos
    local Leaderboard = require(ServerStorage.Leaderboard)
    local PlayerData = require(ServerStorage.PlayerData)
    -- Variables
    local gumdropsFolder = Workspace.Gumdrops
    local gumdrops = gumdropsFolder:GetChildren()
    local GUMDROP_KEY_NAME = PlayerData.GUMDROP_KEY_NAME
    local GUMDROP_AMOUNT_TO_ADD = 1
    local function updatePlayerGumdrops(player, updateFunction)
    -- Actualizar la tabla de gumdrops
    local newGumdropAmount = PlayerData.updateValue(player, GUMDROP_KEY_NAME, updateFunction)
    -- Actualizar la tabla de clasificación de gumdrops
    Leaderboard.setStat(player, GUMDROP_KEY_NAME, newGumdropAmount)
    -- Comprueba si el jugador ha recogido tres gotas de goma
    if newGumdropAmount >= 3 then
    -- Reproduce el audio del evento de la puerta cuando el jugador recoge tres gotas de goma
    local audioPlayer = Workspace.Door.AudioPlayer
    audioPlayer:Play()
    -- Animar la puerta a moverse hacia abajo
    local doorPart = Workspace.Door
    local tweenInfo = TweenInfo.new(2, Enum.EasingStyle.Linear)
    local tween = TweenService:Create(doorPart, tweenInfo, {Position = doorPart.Position + Vector3.new(0, -15, 0)})
    tween:Play()
    end
    end
    -- Definiendo el manipulador de eventos
    local function onGumdropTouched(otherPart, gumdrop)
    if gumdrop:GetAttribute("Enabled") then
    local character = otherPart.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- El jugador tocó una gumdrop
    local audioPlayer = gumdrop.AudioPlayer
    audioPlayer:Play()
    gumdrop.Transparency = 1
    gumdrop:SetAttribute("Enabled", false)
    updatePlayerGumdrops(player, function(oldGumdropAmount)
    oldGumdropAmount = oldGumdropAmount or 0
    return oldGumdropAmount + GUMDROP_AMOUNT_TO_ADD
    end)
    print("Player collected gumdrop")
    end
    end
    end
    -- Configurar los oyentes de eventos
    for _, gumdrop in gumdrops do
    gumdrop:SetAttribute("Enabled", true)
    gumdrop.Touched:Connect(function(otherPart)
    onGumdropTouched(otherPart, gumdrop)
    end)
    end

    Este script comienza por inicializar los servicios Workspace , Players , ServerStorage y TweenService para que pueda referenciar a sus hijos y funcionalidad.Luego, requiere los módulos Tabla de clasificación y Datos de jugador en ; estos módulos son responsables de crear y actualizar una tabla de clasificación en la esquina superior derecha de la pantalla que rastrea la cantidad de bolas de goma que un jugador recoge en el entorno, ambiente.

    La función del script updatePlayerGumdrops es donde ocurre la mayor parte del trabajo para activar el audio 3D para la opiniónde eventos, y toma dos argumentos:

    • player - Un jugador que recoge un gumdrop.
    • updateFunction - Una función de llamada que actualiza la cantidad de gumdrops recogidos por el jugador.

    Cuando un jugador se choca con un gumdrop, el script:

    • Obtiene el nuevo valor de la colección de gumdrops del jugador llamando a la función PlayerData.updateValue.
    • Actualiza la tabla de clasificación con esta nueva cantidad llamando a la función Leaderboard.setStat.
    • Comprueba si la cantidad es mayor o igual a 3 .

    Cuando este valor es mayor o igual a 3, el script:

    • Reproduce la pista de audio 3D desde el reproductor de audio al emisor de audio.
    • Mueve la línea de la puerta linealmente 15 studs por debajo de su posición actual.

    El resto del script está en gran parte a cargo de detectar cualquier cosa que choque con el gumdrop es un jugador para que pueda desencadenar un sonido no posicional para el opiniónde recolección.Para obtener más información sobre esta parte del script, vea Añadir audio de 2D - Comentarios del juego.

  5. Prueba la experiencia para escuchar el sonido de la puerta deslizante después de recoger las tres gotas de goma en el entorno, ambiente.Cuando giras la cámara, el sonido cambia dinámicamente en tus altavoces del mundo real para que lo escuches según la posición del emisor en el espacio 3D.

Interacción de objetos

Cuando los jugadores interactúan con objetos 3D dentro de su entorno, ambiente, como encender un interruptor de luz o recoger una arma, es importante proporcionar comentarios instantáneos para que entiendan intuitivamente cómo interactúan con el objeto.La emparejación de tanto una retroalimentación visual como auditiva refuerza la relación causa-efecto entre las acciones del jugador y la respuesta ambiental.

Para expandir este concepto, revisemos el siguiente audio de un disparo 3D desde la muestra de Planta para el flujo de usuario de la jardinería de un repollo:

  • Un suave sonido de chirrido se reproduce cuando el jugador planta una semilla.
  • Un sonido mojado y salpicadizo se reproduce cuando el jugador riega su planta en crecimiento.
  • Un sonido de clip se reproduce cuando el jugador recoge la planta completamente crecida.
  • Un sonido suave de choque se reproduce cuando el jugador coloca el repollo en el vagón.

Todos estos sonidos reforzan las interacciones de tecla de proximidad del jugador con el objeto que cambia formas en el espacio 3D.Para los jugadores con discapacidades visuales en las que los cambios de color o las animaciones son más difíciles de descifrar por sí en posesión, proporcionar estas múltiples formas de retroalimentación sensorial ayuda a que las interacciones de tu objeto 3D sigan siendo accesibles e intuitivas para tantos jugadores como sea posible.

Para dar un ejemplo diferente de cómo puedes configurar la interacción de objetos con múltiples formas de opiniónsensorial, la muestra proporciona tanto retroalimentación visual como auditiva cada vez que los jugadores pisan el botón de menta de 3D dentro de la casa de jengibre.Cuando los jugadores no interactúan con el botón, parece un caramelo de menta típico, pero cuando pisan el botón, la muestra:

  • Reproduce una pista de audio de jingles celebratorios.
  • Tinte los lados del botón con un tinte verde.
  • Mueve el botón al suelo.

Desde aquí, puedes conectar esta interacción a todo tipo de acciones únicas de juego, como desbloquear un artículo o activar una habilidad especial.

Vista predeterminada
Estado presionado

Para recrear la interacción de un solo disparo del objeto 3D de audio en el archivo de muestra Casa de jengibre - Audio completo:

  1. En la ventana Explorador , navegue hasta Espacio de trabajo > 3DAudioButton , luego:

    1. Inserte un objeto Reproductor de audio para crear una fuente de audio para el botón.
    2. Inserte un objeto Emisor de audio para emitir un flujo posicional desde 3DAudioButton .
    3. Inserta un objeto Cable para llevar el flujo desde el reproductor de audio al emisor de audio.
  2. Seleccione el Reproductor de audio , luego en la ventana Propiedades , establezca ID de activo a rbxassetid://1846248593.

  3. Seleccione el Alambre , luego en la ventana Propiedades ,

    1. Establece SourceInstance a tu nuevo reproductor de audio para especificar que quieres que el cable lleve audio desde este jugadorde audio específico.
    2. Establece TargetInstance a tu nuevo Emisor de audio para especificar que quieres que el cable lleve audio a estos emisores de audio específicos dentro del botón.
  4. De vuelta en la ventana Explorador , inserta un Script en 3DAudioButton , renómlalo Reproducir audio cuando se presiona y luego pega el siguiente código en el script:


    local TweenService = game:GetService("TweenService")
    local buttonModel = script.Parent.Parent
    local buttonPart = buttonModel.ButtonPart
    local buttonPressedAudioPlayer = buttonModel.ButtonPressedAudioPlayer
    local tweenInfo = TweenInfo.new(.2, Enum.EasingStyle.Exponential)
    local buttonTweenByIsPressed = {
    -- Presionado
    [true] = TweenService:Create(buttonPart, tweenInfo, {
    Size = buttonPart.Size / Vector3.new(2, 1, 1),
    Color = Color3.fromRGB(75, 151, 75),
    }),
    -- Por defecto
    [false] = TweenService:Create(buttonPart, tweenInfo, {
    Size = buttonPart.Size,
    Color = Color3.fromRGB(196, 40, 28),
    }),
    }
    local function onIsPlayingChanged()
    local isPlaying = buttonPressedAudioPlayer.IsPlaying
    local tween = buttonTweenByIsPressed[isPlaying]
    tween:Play()
    end
    onIsPlayingChanged()
    buttonPressedAudioPlayer:GetPropertyChangedSignal("IsPlaying"):Connect(onIsPlayingChanged)
    buttonPressedAudioPlayer.Ended:Connect(onIsPlayingChanged)
    buttonPart.Touched:Connect(function(_hit)
    buttonPressedAudioPlayer:Play()
    end)

    El script comienza por obtener:

    • El TweenService para que pueda animar la parte del botón que sobresale del suelo.
    • El aplicación de modeladopadre del script 3DAudioButton .
    • La parte del botón que sobresale del suelo.
    • El reproductor de audio relevante con la pista de sonido de celebración.

    El script luego define:

    • Un objeto TweenInfo que especifica que la animación del botón se reproducirá con un estilo de animación exponencial.
    • Dos adolescentes que representan el estado presionado o no presionado del botón.
      • El estado presionado true mueve el botón ligeramente hacia abajo hacia el suelo y tiñe los lados de la pieza con un tinte verde.
      • El estado no presionado false mueve el botón de vuelta a su posición original y elimina el tinte anterior.

    El resto del script es donde ocurre la mayor parte del trabajo para el opiniónde interacción de objetos, así que revisemos cómo funcionan la función onIsPlayingChanged y los escuchadores de eventos juntos:

    1. buttonPart.Touched escucha a un jugador tocar el botón, luego llama a la función Play() para comenzar a reproducir el audio asociado desde el reproductor de audio.Este proceso cambia la propiedad AudioPlayer.IsPlaying de false a true.
    2. buttonPressedAudioPlayer:GetPropertyChangedSignal("IsPlaying") escucha la propiedad IsPlaying del jugadorde audio para cambiar, luego llama a la función onIsPlayingChanged.
    3. La función onIsPlayingChanged usa esta información para activar el preadolescente que cambia su apariencia visual en el espacio 3D.
    4. Para evitar que el jugador reinicie accidentalmente el audio si se saltara rápidamente sobre el botón en rápida sucesión, buttonPressedAudioPlayer.Ended escucha al reproductor de audio para que termine de reproducirse antes de llamar de nuevo a la función onIsPlayingChanged.

    Es importante tener en cuenta que el evento onIsPlayingChanged solo se activa cuando cambia de false a true , lo que significa que no se activa cuando cambia de true a false .Este es el comportamiento previsto debido a complicaciones con el tiempo de replicación de las propiedades desde el servidor al cliente.Debido a esto, se proporciona y se escucha el evento Ended para cubrir ambos casos en este ejemplo.

  5. Prueba la experiencia para escuchar el sonido de celebración cuando tu personaje de jugador toque el botón 3D en la casa de jengibre.Cuando te alejas del botón, el volumen del sonido disminuye.

Diálogo de personajes

Proporcionar audio direccional desde tus personajes no reproducibles (PNJ) es útil para guiar a los jugadores hacia puntos de interés dentro de su entorno, ambientey agregar profundidad a sus interacciones con otros personajes.De hecho, en los juegos impulsados por la narración, muchos diseñadores de juegos utilizan estratégicamente el diálogo de personajes para enseñar indirectamente a los jugadores sobre sus personajes, aliados y enemigos, o el mundo mismo.

Ejemplos comunes de esta técnica incluyen:

  • Estilo de diálogo para establecer el tono de tu juego.
  • Bromista para enseñar a los jugadores sobre las relaciones de personajes.
  • Conversaciones enemigas para confesar motivaciones o su posición en relación con el jugador.
  • Personajes de jugador hablando sus pensamientos en voz alta para guiar suavemente al jugador a lo que deberían hacer a continuación, como curarse a sí mismos, moverse a otra ubicación o encontrar un objeto.
  • Personajes aliados hablando con el personaje del jugador para revelar detalles del mundo en experiencia como su historia, cultura y problemas sociales.

Para demostrar cómo puede verse esto en la práctica, revisemos el siguiente audio de un disparo 3D desde Más allá de la oscuridad que se reproduce periódicamente cuando los jugadores están en el área principal del vestíbulo de la estación espacial.

Al utilizar la estación espacial como un personaje, este clip de diálogo proporciona a los jugadores un contexto y una sabiduría importantes sobre la configuración general.Por ejemplo, de esta sola frase los jugadores aprenden:

  • Están en el espacio exterior, específicamente en una estación espacial llamada Kerr-Newman Deep Space Relay 14.
  • Su entorno es futurista y acogedor.
  • Son un visitante y probablemente se irán pronto.

Estos detalles juntos sumergen a los jugadores dentro de su entorno, ambientey les añaden un sentido de urgencia a su misión.Sin embargo, si los jugadores no saben cuál es su misión principal, también puedes usar el diálogo de personajes para informar a los jugadores qué quieres que hagan dentro de tu experiencia.

Para ilustrar, la muestra utiliza un volumen o región invisible dentro del espacio 3D, para activar el diálogo de personajes del muñeco de nieve para guiar a los jugadores a recoger tres gotas de goma para abrir la puerta a su inicio.Como una de las primeras cosas que los jugadores ven cuando se unen a la experiencia, es más probable que los jugadores activen el diálogo y sepan lo que deben hacer para tener éxito.

El volumen alrededor del muñeco de nieve usa la retroalimentación de colisión para reproducir audio cuando los jugadores ingresan a la región 3D.

Para recrear el diálogo de personaje de un disparo en 3D de audio en la muestra Casa de jengibre - Audio completo lugar de archivo:

  1. En la ventana Explorador , navegue a Espacio de trabajo > Volumen de diálogo , luego:

    1. Inserta un objeto Reproductor de audio para crear una fuente de audio para el volumen.
    2. Inserta un objeto Emisor de audio para emitir un flujo posicional desde Volumen de diálogo .
    3. Inserta un objeto Cable para llevar el flujo desde el reproductor de audio al emisor de audio.
  2. Seleccione el reproductor de audio , luego en la ventana propiedades , establezca AssetID a para reproducir una pista de audio instructiva para el objetivo de la experiencia.

  3. Seleccione el Alambre , luego en la ventana Propiedades ,

    1. Establece SourceInstance a tu nuevo reproductor de audio para especificar que quieres que el cable lleve audio desde este jugadorde audio específico.
    2. Establece TargetInstance a tu nuevo Emisor de audio para especificar que quieres que el cable lleve audio a este emisor de audio específico dentro del volumen.
  4. De vuelta en la ventana Explorador , navegue hasta StarterPlayer > StarterCharacterScripts , insira un LocalScript , renómbrelo Reproducir audio cuando esté en volumen y pegue el siguiente código en el script local:


    local Workspace = game:GetService("Workspace")
    local Players = game:GetService("Players")
    local humanoid = script.Parent:WaitForChild("Humanoid")
    local volumeDetector = Workspace.DialogueVolume
    local trigger = humanoid:WaitForChild("Animator")
    local debounce = false
    local localPlayer = Players.LocalPlayer
    volumeDetector.Touched:Connect(function(hit)
    if debounce then
    return
    end
    local hitCharacter = hit:FindFirstAncestorWhichIsA("Model")
    local hitPlayer = Players:GetPlayerFromCharacter(hitCharacter)
    if hitPlayer ~= localPlayer then
    return
    end
    debounce = true
    local audioPlayer = Workspace.DialogueVolume.AudioPlayer
    audioPlayer:Play()
    audioPlayer.Ended:Wait()
    debounce = false
    end)

    Este script comienza por obtener los servicios de espacio de trabajo y jugadores para que pueda referenciar a sus hijos y funcionalidad.Para cada personaje de jugador que se carga o reaparece de nuevo en la experiencia, el script espera:

    • Los objetos Humanoid y Animator del personaje.
    • El objeto de volumen en el espacio de trabajo llamado Diálogo de volumen .

    Cuando algo se colisiona con el volumen, la función de manejo de eventos Touched obtiene el primer ancestro que es un Model, que debería ser el personaje si el BasePart que se colisionó con el volumen es un descendiente de un aplicación de modeladode personaje.Si lo es, la función entonces:

    • Establece debounce a true .
    • Reproduce y espera a que finalizarel audio.
    • Establece debounce de nuevo en false .

    Establecer el debounce desde false a true a false de nuevo después de que el audio termine de reproducirse es un patrón de debounce que evita que el audio se active repetidamente a medida que los jugadores continúan chocando con el volumen.Para obtener más información sobre este patrón de debounce, vea Detectar colisiones .

  5. Prueba la experiencia para escuchar el diálogo del personaje instruccional cuando tu personaje de jugador toque el volumen alrededor del muñeco de nieve.