Ajouter un audio 3D

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

L'audio 3D est un son directionnel qui émet d'un endroit spécifique dans l'espace 3D, augmentant ou diminuant le volume en fonction de la distance et de l'orientation entre l'émetteur audio et l'écouteur.Cela signifie que, lorsque les écouteurs ou les émetteurs se déplacent autour de l'environnement, les joueurs peuvent entendre dynamiquement cet audio de différentes directions et de différents niveaux de volume.

En utilisant le fichier Maison en pain d'épice - Commencer.rbxl comme lieu de départ et Maison en pain d'épice - Ajouter un audio de référence comme référence, ce tutoriel vous montre comment ajouter à la fois un audio en boucle et un tir 3D à vos expériences, y compris des conseils sur :

  • Bouclage des sons environnementaux qui se jouent dès que les joueurs se connectent au serveur.
  • Activer l'audio pour informer les joueurs des événements situationnels clés qui sont importants pour leur partie.
  • Activer l'audio pour fournir aux joueurs des commentaires auditifs lorsqu'ils interagissent avec des objets 3D.
  • Jouer des bribes de son de personnage qui engagent et guident les joueurs vers des points d'intérêt dans leur environnement.

Si à un moment donné vous vous retrouvez coincé dans le processus, vous pouvez utiliser maison en pain d'épice - Audio complet comme référence pour comparer vos progrès.

Objets audio

Pour créer un audio directionnel, il est important de comprendre les objets audio avec lesquels vous travaillerez tout au long de ce tutoriel.Il existe six principaux types d'objets audio :

  • L'objet AudioPlayer se charge et joue le fichier audio .
  • L'objet AudioEmitter est un orateur virtuel qui émet de l'audio dans l'environnement 3D.
  • L'objet AudioListener est un microphone virtuel qui récupère l'audio de l'environnement 3D.
  • L'objet AudioDeviceOutput est un dispositif matériel physique dans le monde réel, comme un haut-parleur ou des écouteurs.
  • L'objet AudioDeviceInput est un microphone physique dans le monde réel.
  • Wires transporter des flux audio d'un objet à un autre.

Tous ces objets audio travaillent ensemble pour émettre un son tout comme leurs homologues du monde réel.Regardons comment cela fonctionne en pratique en utilisant un exemple de joueur portant un casque pendant qu'il joue à une expérience avec son ordinateur portable :

  • Le AudioPlayer charge l'audio assetID 1516791621 dans l'expérience pour une piste de pluie.
  • Le AudioEmitter émet un flux de l'audio de la piste de pluie dans l'environnement 3D.
  • Un Wire transporte le flux du AudioPlayer au AudioEmitter afin que le flux sorte du enceinte3D.
  • La liste d'objets de l'enfant du personnage écoute ce son dans l'environnement 3D et le renvoie à son casque.
  • L'objet AudioDeviceOutput porte le son du AudioListener au enceintephysique du joueur, ou dans ce cas, à ses écouteurs.
  • L'objet AudioDeviceInput capture le son du monde réel et le renvoie dans l'expérience pour le chat avec voix.
Représentations d'objets dans l'expérience
Représentations d'objets dans le monde réel

Les sections suivantes plongent plus profondément et font référence à ces objets lorsque vous apprenez à jouer à la fois de l'audio en boucle et un tir 3D.Lorsque vous examinez ces objets avec les techniques à venir, vous pouvez prédire plus précisément comment capturer et alimenter le son de l'expérience au joueur et vice versa.

Boucle d'audio

Boucle d'audio 3D , ou audio directionnel qui se répète sans problème dès que les joueurs se connectent au serveur, est une technique de design sonore commune pour améliorer l'atmosphère de l'espace 3D en la rendant vivante et dynamique.En outre, la boucle d'audio 3D maintient vos sources sonores environnementales cohérentes, comme le statique d'une télévision ou le rugissement d'une cascade ; si ces sons devaient s'arrêter soudainement, l'environnement se sentirait irréaliste.

Pour démontrer ce concept, examinez comment l'audio 3D suivant pour deux grandes cascades s'arrête dès que la piste audio non bouclée est terminée.Bien que l'eau semble initialement immerger les joueurs dans l'environnement extérieur, le changement auditif soudain est dérangeant et artificiel pour la façon dont une cascade se comporte dans le monde réel.

De même, l'échantillon utilise cette technique pour la cascade de chocolat en mouvement et ajuste son volume en fonction de la distance du joueur de l'émetteur audio.Lorsque le joueur est à moins de 20 studs de distance, l'émetteur émet le son à volume complet.À mesure que le joueur s'éloigne, l'audio slosh diminue de volume toutes les 20 unités à partir de l'émetteur audio.Cela émule le son du monde réel qui diminue en volume plus vous êtes loin de la source.

Pour recréer l'audio en boucle 3D dans l'échantillon Maison en pain d'épice - Audio complet :

  1. Activer un écouteur par défaut qui est attaché au personnage joueur.

    1. Dans la fenêtre Explorateur , sélectionnez le SoundService .
    2. Dans la fenêtre Propriétés , définissez DefaultListenerLocation sur Caractère .Lorsque vous exécutez l'expérience, le moteur effectue automatiquement :
      • Crée un AudioListener sous chaque personnage joueur Humanoid.RootPart afin que vous puissiez entendre les sons se déplacer dans vos haut-parleurs du monde réel selon la position et l'échelle des sources sonores dans l'expérience.
      • Crée un AudioDeviceOutput sous SoundService .
  2. Dans la fenêtre Explorateur , naviguez vers Espace de travail > WaterfallAudioObject , puis :

    1. Insérez un objet Lecteur audio pour créer une source audio pour la cascade.
    2. Insérez un objet Émetteur audio pour émettre un flux positionnel à partir de WaterfallAudioObject .
    3. Insérez un objet fil pour transporter le flux du lecteur audio vers l'émetteur audio.
  3. Sélectionnez le lecteur audio , puis dans la fenêtre propriétés ,

    1. Définissez AssetID à rbxassetid://1516791621 pour jouer une piste audio pluvieuse.
    2. Activer bouclage afin que l'audio se répète sans interruption.
  4. Sélectionnez le Émetteur audio , puis dans la fenêtre Propriétés , définissez Atténuation de distance à afin que le son diminue progressivement de volume tous les 20 studs loin de l'émetteur audio.

  5. Sélectionnez le fil , puis dans la fenêtre propriétés ,

    1. Définissez SourceInstance à votre nouveau lecteur audio pour spécifier que vous voulez que le câble transporte l'audio à partir d'un joueuraudio spécifique.
    2. Définissez TargetInstance à votre nouveau émetteur audio pour spécifier que vous voulez que le câble transporte l'audio vers cet émetteur audio spécifique dans la cascade.
  6. De retour dans la fenêtre Explorateur , insérez un script dans WaterfallAudioObject , renommez-le LoopWaterfallMusic , puis définissez sa propriété RunContext sur Client , puis collez le code suivant dans le script :


    local audioPlayer = script.Parent
    audioPlayer:Play()

    Le script commence par déclarer une variable pour représenter le parent du script AudioPlayer .Le script définit ensuite la source audio à jouer dès le moment où le joueur rejoint l'expérience jusqu'au moment où il quitte l'expérience.

  7. Testez l'expérience pour entendre le son de pluie de chocolat en boucle lorsque votre avatar est près de la cascade.Lorsque vous faites pivoter la tête de votre personnage pour regarder dans une direction différente, le son se déplace dynamiquement dans les haut-parleurs du monde réel en fonction de la position de l'émetteur dans l'espace 3D.

Un tir audio

Un son 3D en un tir , ou un son directionnel qui se joue une fois à un moment et à une position spécifiques à moins qu'un joueur ne le déclenche à nouveau, fournit aux joueurs un contexte sur leurs actions, l'environnement et tout personnage autour d'eux.L'utilisation de ce type de retour auditif dans vos expériences est essentielle car elle permet aux joueurs de prendre des décisions stratégiques comme éviter les ennemis entrants ou récupérer des objets utiles.

Les sections suivantes fournissent des détails de mise en œuvre pour les scénarios de jeu communs dans lesquels les joueurs ont besoin de commentaires tempestifs et directionnels, y compris des événements de jeu situationnels, l'interaction d'objets et un dialogue de personnage non jouable.

Commentaires sur l'commentaires

Comme les joueurs déclenchent des événements situationnels clés dans leur environnement, tels que le déverrouillage de nouvelles zones de jeu ou l'incitation au lancerennemi, il est essentiel qu'ils comprennent où dans l'espace 3D ils doivent diriger leur concentration et leur attention.S'ils ne reçoivent pas de commentairesauditive immédiate, ils peuvent manquer des informations importantes pour leur partie, ce qui entraîne de la frustration de ne pas savoir où aller ou quoi faire ensuite.

Pour démontrer pourquoi c'est important, examinons l'audio 3D d'un tir à partir du modèle Laser Tag qui joue à partir du blaster de chaque joueur :

  • Un son pop profond se joue pour chaque explosion que le joueur tire de son blaster.
  • Un clic et un son de bip robotique se jouent chaque fois que le joueur recharge son blaster avec une nouvelle manche.

Ces deux sons fournissent une conscience situationnelle en alertant tous les joueurs proches de la direction d'où proviennent les explosions afin qu'ils puissent prendre des décisions éclairées pour rejoindre le plaisir ou éviter le danger potentiel.

L'échantillon utilise la même technique pour fournir aux joueurs une conscience situationnelle de leur récompense pour avoir terminé l'objectif principal dans l'expérience.Une fois qu'ils ont collecté les trois boules de gomme, la porte de la maison en pain d'épice s'ouvre pour permettre aux joueurs d'accéder au présent à l'intérieur.

Comme il n'y a pas d'ordre spécifique que les joueurs doivent collecter les boules de gomme, il est important que les joueurs sachent que la porte s'ouvre peu importe la boule de gomme qu'ils collectent en dernier.Le son positionnel rend cela possible afin que les joueurs soient au courant de leur succès et sachent où ils doivent aller ensuite, indépendamment de leur distance et de leur direction par rapport à la porte.

Pour recréer le retour d'événement de tir unique 3D audio dans le fichier d'audio d'échantillon Maison en pain d'épice - Audio complet :

  1. Dans la fenêtre Explorateur , naviguez vers Espace de travail > Porte , puis :

    1. Insérez un objet Lecteur audio pour créer une source audio pour le volume.
    2. Insérez un objet Émetteur audio pour émettre un flux positionnel à partir de porte .
    3. Insérez un objet fil pour transporter le flux du lecteur audio vers l'émetteur audio.
  2. Sélectionnez le lecteur audio , puis dans la fenêtre propriétés , définissez AssetID à pour jouer une piste audio de porte coulissante en métal.

  3. Sélectionnez le fil , puis dans la fenêtre propriétés ,

    1. Définissez SourceInstance à votre nouveau lecteur audio pour spécifier que vous voulez que le câble transporte l'audio à partir d'un joueuraudio spécifique.
    2. Définissez TargetInstance à votre nouveau émetteur audio pour spécifier que vous voulez que le câble transporte l'audio vers cet émetteur audio spécifique dans le volume.
  4. Retour dans la fenêtre Explorateur , naviguez vers ServerScriptService , puis insérez un script , renommez-le GumdropService , définissez sa propriété RunContext à serveur , puis collez le code suivant dans le script :


    -- Initialisation des variables
    local Workspace = game:GetService("Workspace")
    local Players = game:GetService("Players")
    local ServerStorage = game:GetService("ServerStorage")
    local TweenService = game:GetService("TweenService")
    -- Moduleurs
    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)
    -- Mise à jour de la table gumdrop
    local newGumdropAmount = PlayerData.updateValue(player, GUMDROP_KEY_NAME, updateFunction)
    -- Mise à jour du classement gumdrop
    Leaderboard.setStat(player, GUMDROP_KEY_NAME, newGumdropAmount)
    -- Vérifiez si le joueur a collecté trois boules de gomme
    if newGumdropAmount >= 3 then
    -- Jouez l'audio d'événement de la porte lorsque le joueur collecte trois boules de gomme
    local audioPlayer = Workspace.Door.AudioPlayer
    audioPlayer:Play()
    -- Animer la porte pour qu'elle descende
    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
    -- Définir le gestionnaire d'événement
    local function onGumdropTouched(otherPart, gumdrop)
    if gumdrop:GetAttribute("Enabled") then
    local character = otherPart.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Le joueur a touché une 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
    -- Configurer les écouteurs d'événement
    for _, gumdrop in gumdrops do
    gumdrop:SetAttribute("Enabled", true)
    gumdrop.Touched:Connect(function(otherPart)
    onGumdropTouched(otherPart, gumdrop)
    end)
    end

    Ce script commence par initialiser les services Workspace , Players , ServerStorage et TweenService afin qu'ils puissent référencer leurs enfants et leur fonctionnalité.Ensuite, il nécessite les modules Classement et Données du joueur dans ; ces modules sont responsables de la création et de la mise à jour d'un classement dans le coin supérieur droit de l'écran qui suit le nombre de boules de gomme qu'un joueur collecte dans l'environnement.

    La fonction du script updatePlayerGumdrops est là où se produit la majeure partie du travail pour déclencher l'audio 3D pour les commentaires d'événement, et elle prend deux arguments :

    • player - Un joueur qui collecte un gumdrop.
    • updateFunction - Une fonction de rappel qui met à jour la quantité de gumdrops collectée par le joueur.

    Lorsqu'un joueur se heurte à un gumdrop, le script :

    • Obtient la valeur de la nouvelle collection de boules de gomme du joueur en appelant la fonction PlayerData.updateValue.
    • Mise à jour du classement avec ce nouveau montant en appelant la fonction Leaderboard.setStat.
    • Vérifications pour voir si le montant est supérieur ou égal à 3.

    Lorsque cette valeur est supérieure ou égale à 3, le script :

    • Joue la piste audio 3D du lecteur audio vers l'émetteur audio.
    • Déplace la ligne de la porte linéairement 15 en-dessous de sa position actuelle.

    Le reste du script est en grande partie responsable de la détection de tout ce qui entre en collision avec le gumdrop est un joueur afin qu'il puisse déclencher un son non positionnel pour le retour de commentaires.Pour plus d'informations sur cette partie du script, voir Ajouter un audio 2D - Commentaires sur le gameplay .

  5. Testez l'expérience pour entendre le son du portillon de diapositives après avoir collecté les trois boules de gomme dans l'environnement.Lorsque vous faites pivoter la caméra, le son change dynamiquement dans vos haut-parleurs du monde réel afin que vous l'entendiez selon la position de l'émetteur dans l'espace 3D.

Interaction d'objet

Lorsque les joueurs interagissent avec des objets 3D dans leur environnement, comme allumer un interrupteur d'éclairage ou prendre une arme, il est important de fournir un retour instantané pour qu'ils comprennent intuitivement comment ils interagissent avec l'objet.L'accouplement à la fois d'un retour visuel et auditif renforce la relation cause-effet entre les actions du joueur et la réponse environnementale.

Pour développer ce concept, examinons l'audio 3D d'un tir suivant de l'échantillon de la plante pour le flux d'utilisation de jardinage d'un chou :

  • Un doux son de claquement se joue lorsque le joueur plante une graine.
  • Un son humide et semblable à un éclat se joue lorsque le joueur arrose sa plante en croissance.
  • Un son de clip se joue lorsque le joueur récolte la plante entièrement développée.
  • Un son doux de thud se joue lorsque le joueur place le chou dans le wagon.

Tous ces sons renforcent les interactions de clé de proximité du joueur avec l'objet changeant de forme dans l'espace 3D.Pour les joueurs souffrant d'affections visuelles dans lesquelles les changements de couleur ou les animations sont plus difficiles à déchiffrer par posséder, fournir ces multiples formes de rétroaction sensorielle aide vos interactions d'objets 3D à rester accessibles et intuitives pour autant de joueurs que possible.

Pour donner un autre exemple de la façon dont vous pouvez configurer l'interaction d'objets avec plusieurs formes de rétroaction sensorielle, l'échantillon fournit des commentaires visuels et auditionnels chaque fois que les joueurs marchent sur le bouton de menthe 3D dans la maison de pain d'épice.Lorsque les joueurs ne sont pas en interaction avec le bouton, il apparaît comme une bonbon de menthe typique, mais lorsqu'ils marchent sur le bouton, l'échantillon :

  • Joue une piste audio de jingle célébrant.
  • Teinte les côtés du bouton avec une teinte verte.
  • Déplace le bouton dans le sol.

À partir de là, vous pouvez connecter cette interaction à toutes sortes d'actions de jeu uniques, telles que le déverrouillage d'un article ou le déclenchement d'une capacité spéciale.

Vue par défaut
État pressé

Pour recréer l'interaction audio 3D d'un seul tir de l'objet dans le fichier d'audio d'échantillon Maison en pain d'épice - Audio complet :

  1. Dans la fenêtre Explorateur , naviguez vers Espace de travail > Bouton 3DAudio , puis :

    1. Insérez un objet Lecteur audio pour créer une source audio pour le bouton.
    2. Insérez un objet Émetteur audio pour émettre un flux positionnel à partir de 3DAudioButton .
    3. Insérez un objet fil pour transporter le flux du lecteur audio vers l'émetteur audio.
  2. Sélectionnez le lecteur audio , puis dans la fenêtre propriétés , définissez AssetID à pour jouer une piste audio joyeuse et festive.

  3. Sélectionnez le fil , puis dans la fenêtre propriétés ,

    1. Définissez SourceInstance à votre nouveau lecteur audio pour spécifier que vous voulez que le câble transporte l'audio à partir d'un joueuraudio spécifique.
    2. Définissez TargetInstance à votre nouveau émetteur audio pour spécifier que vous voulez que le câble transporte l'audio vers ces émetteurs audio spécifiques dans le bouton.
  4. De retour dans la fenêtre Explorateur , insérez un script dans 3DAudioButton , renommez-le jouer de l'audio lorsqu'il est appuyé , puis collez le code suivant dans le 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 = {
    -- Appuyé
    [true] = TweenService:Create(buttonPart, tweenInfo, {
    Size = buttonPart.Size / Vector3.new(2, 1, 1),
    Color = Color3.fromRGB(75, 151, 75),
    }),
    -- Par défaut
    [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)

    Le script commence par obtenir :

    • Le TweenService pour qu'il puisse animer la partie du bouton qui dépasse du sol.
    • Le modèlisationparent du script 3DAudioButton .
    • La partie du bouton qui dépasse du sol.
    • Le lecteur audio pertinent avec la piste audio de votre célébration.

    Le script définit ensuite :

    • Un objet TweenInfo qui spécifie que l'animation du bouton sera jouée avec un style d'animation exponentielle.
    • Deux adolescents qui représentent l'état pressé ou non pressé du bouton.
      • L'état pressé true déplace le bouton légèrement vers le bas dans le sol et teinte les côtés de la pièce d'une teinte verte.
      • L'état non comprimé false déplace le bouton à sa position d'origine et supprime la teinte précédente.

    Le reste du script est où se produit la majeure partie du travail pour le retour de commentaires sur l'interaction d'objets, alors examinons comment la fonction onIsPlayingChanged et les écouteurs d'événements travaillent ensemble :

    1. buttonPart.Touched écoute un joueur pour toucher le bouton, puis appelle la fonction Play() pour commencer à jouer l'audio associé du lecteur audio.Ce processus change la propriété AudioPlayer.IsPlaying de false en true .
    2. buttonPressedAudioPlayer:GetPropertyChangedSignal("IsPlaying") écoute la propriété IsPlaying du joueuraudio pour changer, puis appelle la fonction onIsPlayingChanged.
    3. La fonction onIsPlayingChanged utilise cette information pour déclencher l'adolescent qui change son apparence visuelle dans l'espace 3D.
    4. Pour empêcher le joueur de redémarrer accidentellement l'audio s'il saute rapidement sur le bouton en succession rapide, buttonPressedAudioPlayer.Ended écoute le lecteur audio pour terminer de jouer avant d'appeler à nouveau la fonction onIsPlayingChanged.

    Il est important de noter que l'événement onIsPlayingChanged ne se déclenche que lorsqu'il change de false à true, ce qui signifie qu'il ne se déclenche pas lorsqu'il change de true à false.C'est un comportement prévu en raison de complications avec le calendrier de la réplication des propriétés du serveur au client.Pour cette raison, l'événement Ended est fourni et écouté dans cet exemple pour couvrir les deux cas.

  5. Testez l'expérience pour entendre le son de célébration lorsque votre personnage de joueur touche le bouton 3D dans la maison en pain d'épice.Lorsque vous vous éloignez du bouton, le volume du son diminue.

Dialogue des personnages

Fournir un audio directionnel à partir de vos personnages non jouables (PNJ) est utile pour guider les joueurs vers des points d'intérêt dans leur environnement et ajouter de la profondeur à leurs interactions avec d'autres personnages.En fait, dans les jeux axés sur l'histoire, de nombreux concepteurs de jeux utilisent stratégiquement le dialogue des personnages pour enseigner indirectement aux joueurs leur personnage, leur allié et leur ennemi, ou le monde lui-même.

Les exemples communs de cette technique incluent :

  • Style de dialogue pour définir le ton de votre jeu.
  • Banter pour enseigner aux joueurs les relations de caractère.
  • Les conversations ennemies pour avouer des motivations ou leur position par rapport au joueur.
  • Les personnages joueurs parlent de leurs pensées à voix haute pour guider doucement le joueur à ce qu'il devrait faire ensuite, comme se soigner, se déplacer vers un autre endroit ou trouver un item. * Personnages alliés qui parlent au personnage du joueur pour révéler des détails du monde en expérience comme son histoire, sa culture et ses problèmes sociaux. Pour démontrer à quoi cela peut ressembler en pratique, examinons le suivant audio 3D d'un tir à partir de Beyond the Dark présentation qui joue périodiquement lorsque les joueurs sont dans la zone principale du lobby de la station spatiale.

En utilisant la station spatiale comme personnage, cette séquence de dialogue fournit aux joueurs un contexte et des informations importantes sur le paramètregénéral.Par exemple, à partir de cette seule phrase, les joueurs apprennent :

  • Ils sont dans l'espace, plus précisément sur une station spatiale nommée Kerr-Newman Deep Space Relay 14.
  • Leur environnement est futuriste et accueillant.
  • Ils sont un visiteur et vont probablement partir bientôt.

Ces détails ensemble plongent les joueurs dans leur environnement et ajoutent un sentiment d'urgence à leur mission.Cependant, si les joueurs ne savent pas quelle est leur mission principale, vous pouvez également utiliser le dialogue des personnages pour informer les joueurs de ce que vous voulez qu'ils fassent dans votre expérience.

Pour illustrer, l'échantillon utilise un volume ou une région invisible dans l'espace 3D pour déclencher le dialogue des personnages du bonhomme de neige pour guider les joueurs à collecter trois boules de gomme afin d'ouvrir la porte de sa Accueil.Comme l'une des premières choses que les joueurs voient lorsqu'ils rejoignent l'expérience, les joueurs sont plus susceptibles de déclencher le dialogue et de savoir ce qu'ils doivent faire pour réussir.

Le volume autour du bonhomme de neige utilise le retour de collision pour jouer de l'audio lorsque les joueurs entrent dans la région 3D.

Pour recréer le dialogue de personnage à un tir 3D audio dans l'échantillon Maison en pain d'épice - Audio complet :

  1. Dans la fenêtre Explorateur , naviguez vers Espace de travail > Volume de dialogue puis :

    1. Insérez un objet Lecteur audio pour créer une source audio pour le volume.
    2. Insérez un objet Émetteur audio pour émettre un flux positionnel à partir de DialogueVolume .
    3. Insérez un objet fil pour transporter le flux du lecteur audio vers l'émetteur audio.
  2. Sélectionnez le lecteur audio , puis dans la fenêtre propriétés , définissez AssetID à rbxassetid://92917410841704 pour jouer une piste audio instructive pour l'objectif de l'expérience.

  3. Sélectionnez le fil , puis dans la fenêtre propriétés ,

    1. Définissez SourceInstance à votre nouveau lecteur audio pour spécifier que vous voulez que le câble transporte l'audio à partir d'un joueuraudio spécifique.
    2. Définissez TargetInstance à votre nouveau émetteur audio pour spécifier que vous voulez que le câble transporte l'audio vers cet émetteur audio spécifique dans le volume.
  4. De retour dans la fenêtre Explorateur , naviguez vers StarterPlayer > StarterCharacterScripts , insérez un LocalScript , renommez-le JouerAudioLorsqueDansVolume , et collez le code suivant dans le 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)

    Ce script commence par obtenir les services Workspace et Players afin qu'il puisse référencer leurs enfants et leur fonctionnalité.Pour chaque personnage de joueur qui se charge ou réapparaît dans l'expérience, le script attend :

    • Les objets Humanoid et Animator du personnage.
    • L'objet de volume dans l'espace de travail nommé DialogueVolume .

    Lorsque quelque chose se heurte au volume, la fonction de gestionnaire d'événement Touched obtient le premier ancêtre qui est un Model, qui devrait être le personnage si le BasePart qui a collidé avec le volume est un descendant d'un modèlisationde personnage.Si c'est le cas, la fonction alors :

    • Défini le débounce à true .
    • Joue et attend que l'audio se terminer.
    • Défini le débounce de retour à false .

    L'ajustement du décalage de false à true à false de nouveau après que l'audio ait fini de jouer est un modèle de décalage qui empêche l'audio de se déclencher à plusieurs reprises car les joueurs se heurtent en permanence au volume.Pour plus d'informations sur ce modèle de débounce, voir Détecter les collisions .

  5. Testez l'expérience pour entendre le dialogue du personnage instructif lorsque votre personnage de joueur touche le volume autour du bonhomme de neige.