Utilisation de la fonction de chat vocal
La version préliminaire du package Zepeto.Voice.Chat permet le chat vocal dans le Monde.
1) Installer Windows → Gestionnaire de packages → ZEPETO.Voice.Chat.
- Cette fonctionnalité est disponible dans un Monde où des éléments multijoueurs sont implémentés.
- Les tests ne sont disponibles que dans le test mobile, pas dans le test éditeur.
- En raison de la politique iOS, le volume de l'appareil ne tombe pas à zéro lorsque le microphone est activé dans les mondes avec chat vocal activé. Le volume de l'appareil tombera à zéro lorsque le microphone sera désactivé.
2) Cliquez sur le bouton [▼] dans le menu du milieu de l'écran du projet Unity qui est en cours de développement. Cliquez sur le bouton [Ouvrir les paramètres du monde] dans le menu contextuel qui apparaît.
3) Si le package ZEPETO.Voice.Chat est installé correctement, vous verrez l'option Mode de chat vocal ajoutée.
4) En mode de chat vocal, veuillez définir le mode souhaité.
- Basique : Utilisez la fonction de chat vocal fournie par défaut.
- Script : Utilisez la fonction de chat vocal en implémentant l'API de chat vocal.
- Vous pouvez traiter l'entrée/sortie d'accès à la salle pour le chat vocal à l'exécution.
- Implémentez le chat vocal pour des équipes distinctes (par exemple, chat vocal de l'équipe rouge et chat vocal de l'équipe bleue)
- Détection de l'utilisateur parlant actuellement
Un monde avec le chat vocal en mode de base ressemble à ceci.
Vous pouvez également créer des chats vocaux plus divertissants en utilisant la fonction de modulation vocale.
Le chat vocal est automatiquement activé lors de l'entrée dans le monde avec la fonction de chat vocal.
👍 La première fois que vous utilisez la fonction de chat vocal dans ZEPETO, une fenêtre contextuelle concernant l'accès au microphone apparaîtra. Vous devez autoriser l'accès pour utiliser la fonction de chat vocal.
- Dans l'application ZEPETO 3.26.000 et supérieure, l'icône du haut-parleur de chat vocal n'apparaît pas.
- Si vous souhaitez faire apparaître l'icône de discours, veuillez passer en Mode Script et suivre le guide pour écrire votre propre code.
Le mode script permet le chat vocal dans les canaux séparés par équipes.
Veuillez vous référer à la description de la fonction et à l'exemple ci-dessous pour mettre en œuvre la fonctionnalité.
API | Description |
---|---|
OnInitializedEvent | Les API de chat vocal sont disponibles après qu'un événement True se soit produit dans l'événement d'initialisation. Si cet événement est True, le chat vocal est disponible, et s'il est False, le chat vocal n'est pas disponible. |
EnterRoom(RoomProperty roomProperty) | Fonctions pour entrer dans une salle de chat vocal - Après être entré avec succès dans la salle de chat vocal, le bouton de chat vocal apparaîtra |
ExitRoom() | Fonction pour quitter une salle de chat vocal |
OnRoomConnectedEvent | Un événement pour vérifier l'état d'entrée dans une salle de chat vocal. Si cet événement est vrai, l'utilisateur est entré dans la salle de chat vocal ; s'il est faux, l'utilisateur a quitté la salle de chat vocal. |
OnSpeechDetectedEvent<string, boolean> | Événement pour détecter l'utilisateur qui parle actuellement dans le chat vocal. - string est l'userId de l'utilisateur qui parle - boolean est vrai lorsque l'énoncé commence, faux lorsque l'énoncé se termine |
ChangeTeamID(number teamid) | Fonction pour changer le TeamId utilisé dans la salle de chat vocal - Peut seulement être défini sur une valeur int de 1 ou plus |
API | Description |
---|---|
SetAudioMode | Mode audio à utiliser dans le chat vocal - AudioMode.Omnidirectionnel: Mode de chat vocal sans atténuation de la voix basée sur la distance (Vous pouvez l'utiliser avec ou sans le personnage ZEPETO) - AudioMode.Directionnel: Mode de chat vocal avec atténuation de la voix basée sur la distance (Le personnage ZEPETO doit être présent dans la scène, car ce mode fonctionne en fonction de l'emplacement du personnage ZEPETO) |
SetTeamID | TeamId à utiliser dans le chat vocal pour activer le chat vocal entre les utilisateurs ayant le même TeamId. - Ne peut être défini qu'à une valeur entière de 1 ou plus |
Voici un exemple de code pour essayer l'API de chat vocal.
1) Ajoutez un bouton et enregistrez le texte sur le canevas comme indiqué dans l'image ci-dessous pour entrer dans le canal de l'équipe de chat vocal et afficher le journal d'état.
- Bouton
- Bouton_equipeBleue : Bouton d'entrée pour le chat vocal de l'équipe bleue
- Bouton_equipeRouge : Bouton d'entrée pour le chat vocal de l'équipe rouge
- Bouton_sortie : Bouton de sortie du chat vocal
- Texte
- Texte_journal : Texte à afficher pour le journal de chat
- Texte_equipe : Texte à afficher pour la liste des membres du même canal de chat vocal
- Texte_enCoursDeParler : Texte à afficher pour l'UserId qui parle actuellement dans le chat vocal.
2) Créer un projet > Créer > ZEPETO > TypeScript et le renommer en VoiceChatTest.
3) Écrire un script d'exemple comme indiqué ci-dessous.
- Description du code
- Lorsque le script s'exécute, il enregistrera un événement sur chaque bouton dans la fonction Start() et enregistrera les événements OnInitialized, OnRoomConnected et OnSpeechDetected sur le VoiceChatController.
- Lorsque le bouton de l'équipe bleue ou le bouton de l'équipe rouge est cliqué, la fonction EnterVoiceChatRoom() est exécutée et l'utilisateur entre dans la salle de chat vocal en entrant la RoomProperty spécifiée. Les propriétés de la salle dans l'exemple sont les suivantes.
- roomProperty.SetAudioMode : AudioMode.Omnidirectional. Le mode audio Omnidirectionnel est un mode où le volume sonne de la même manière, quelle que soit la position du joueur. En revanche, le mode Directionnel est un mode sonore 3D, ce qui signifie que le volume sonnera différemment selon la position du personnage, donc plus le personnage est éloigné, plus le volume sera faible.
- roomProperty.SetTeamID : Canal 2 pour l'équipe bleue, Canal 3 pour l'équipe rouge. SetTeamID agit comme un canal dans le chat vocal. Une équipe qui entre dans le canal 2 ne peut discuter vocalement qu'avec les joueurs du canal 2, et une équipe qui entre dans le canal 3 ne peut discuter vocalement qu'avec les joueurs du canal 3.
- ExitVoiceChatRoom() quittera le canal de chat vocal de l'équipe actuelle.
- OnSpeechDetected() affichera l'ID du joueur qui utilise actuellement le chat vocal dans le canal de l'équipe dans le texte du journal.
4) Après avoir terminé le script, assignez le bouton et le texte créés à l'étape 1 dans l'inspecteur.
5) Exécutez le test sur mobile via le code QR ou le lien de test, et vous pouvez voir que le bouton d'activation du chat vocal est créé lorsque le bouton Entrer dans l'équipe est pressé, et chaque fois qu'un joueur parle, le journal montre quel joueur est dans le chat vocal, comme indiqué dans l'écran suivant.
Dans l'application ZEPETO 3.26.000 et les versions ultérieures, l'icône d'énonciation du chat vocal n'apparaît pas. Si vous souhaitez gérer l'apparition de l'icône d'énonciation, veuillez suivre le guide et écrire votre propre code.
1) Pour afficher une bulle de dialogue au-dessus de la tête du personnage lorsque le joueur est dans le chat vocal, vous devrez créer un prefab qui utilise une image de bulle de dialogue. Importez l'image PNG de bulle de dialogue que vous souhaitez utiliser comme indiqué ci-dessous et changez son type de texture en Sprite.
2) Projet > Créer > Prefab et renommez-le en ChatBubble.
3) Double-cliquez sur le prefab ChatBubble pour entrer en mode d'édition du prefab. Sélectionnez le prefab ChatBubble et choisissez Transform > Position > Changez la valeur Y à 0.35.
4) Créez un Canvas à l'intérieur de l'objet prefab.
- Double-cliquez sur le prefab ChatBubble pour entrer en mode d'édition de prefab, puis ajoutez Hiérarchie > UI > Canvas.
- Changez les valeurs du composant RectTransform du Canvas comme suit
- PosX: 0 , posY: 0
- Largeur: 100, hauteur: 100
- ÉchelleX: 0.005, ÉchelleY: 0.005, ÉchelleZ: 0.005
- Changez le RenderMove du composant Canvas en Espace Mondial.
5) Créez une image de bulle de dialogue à l'intérieur du Canvas.
- Ajoutez Hiérarchie > UI > Image comme enfant du Canvas, et renommez-le ChatBubbleImage.
- Changez les valeurs du composant RectTransform de ChatBubbleImage comme suit
- Largeur 42, Hauteur:42
- Enregistrez le Sprite d'image que vous avez importé à l'étape 1 comme Image Source dans le composant Image.
👍 CONSEIL
- Vous pouvez également animer l'image sprite de la bulle de dialogue.
- Vous pouvez également utiliser des images de bulles séparées pour différentes équipes.
6) Projet > Créer > ZEPETO > Créer un TypeScript et le renommer en VoiceChatBubbleController.
7) Écrivez un script d'exemple comme indiqué ci-dessous.
- Description du code
- Lorsque le script est exécuté, il enregistrera des événements sur chaque bouton dans la fonction Start() et les événements OnInitialized, OnRoomConnected et OnSpeechDetected sur le VoiceChatController.
- Après OnInitialized(), le bouton de chat vocal sera exposé sur l'écran du joueur lorsqu'il entre dans le monde, et lorsqu'il appuie sur le bouton, EnterVoiceChatRoom() sera exécuté pour entrer dans la salle de chat vocal.
- Chaque fois que le joueur active VoiceChat et parle, OnSpeechDetected() est exécuté, et si speechDetected est vrai, l'objet BubbleChat est activé, et s'il est faux, il est désactivé.
- La première fois que la fonction OnSpeechDetected() est activée, CreateVoiceBubble() instanciera un GameObject voiceChatPrefab pour flotter au-dessus de la tête du joueur et l'enregistrera comme données de carte dans _voiceBubbleMap.
- Nous utilisons LateUpdate() pour mettre à jour la rotation de la bulle de chat vocal à chaque image pour correspondre au CameraParent du monde ZEPETO. Cela garantit que l'image de la bulle de discours fait toujours face à la caméra. Il vérifie d'abord si _voiceBubbleMap est vide, sinon il met à jour la rotation de l'image de la bulle de discours prefab.
8) Après avoir terminé d'écrire le script, assignez l'entrée VoiceChatPrefab dans l'inspecteur comme le prefab de bulle de discours que vous avez créé à l'ÉTAPE 1.
9) Exécutez-le sur mobile via un code QR ou un lien de test et vous devriez voir l'image de la bulle de discours apparaître au-dessus de la tête du personnage chaque fois que le joueur utilise le chat vocal.
À partir de la version 0.2.1-preview de Voice Chat, vous pouvez moduler la voix de Voice Chat en mode Script.
Essayez la modulation vocale en utilisant le guide API et le code d'exemple.
Type de voix (enum) | Valeur | Description |
---|---|---|
Type00 | 0 | Original |
Type01 | 1 | Souris |
Type02 | 2 | Oncle |
Type03 | 3 | Écho |
Type04 | 4 | Voix profonde |
Type05 | 5 | Robot |
Type06 | 6 | Dialecte |
Type07 | 7 | Mégaphone |
Type08 | 8 | Bête |
Type09 | 9 | Machine |
Type10 | 10 | Courant fort |
Type11 | 11 | Enfant |
Type12 | 12 | Hérisson |
Voici un exemple de script de modulation vocale.
- Description du code :
- Ajoute un écouteur onClick pour chaque bouton afin de définir différents types de modulation vocale.
- Les éléments du même index dans le boutons tableau et le voiceTypes tableau sont appariés.
- Lors de l'entrée dans le monde, VoiceChatController est initialisé, et la connexion à la salle est établie automatiquement.
- Le type de modulation vocale initial est défini sur Type00, et le retour audio est activé pour entendre votre propre voix.
- Notez que pour l'invocation de SetVoiceType et EnableLoopback, une connexion à la salle est nécessaire. Par conséquent, la configuration initiale est gérée dans l'écouteur de l'OnRoomConnectedEvent.
Vous pouvez changer l'emplacement du chat vocal du joueur local en utilisant VoiceChatController.SetLocalPlayerTransform().
En utilisant cela, vous pouvez créer divers scénarios en définissant votre emplacement à un espace ou un objet spécifique lors de la conversation en chat vocal.
📘 conseils La transformation du chat vocal est liée à la transformation du personnage ZEPETO du joueur local.
Par conséquent, si le personnage ZEPETO du joueur local n'a pas été créé dans le monde, votre voix peut ne pas être transmise.
Dans ce cas, vous pouvez utiliser le chat vocal en définissant l'emplacement de lecture de la voix dans la scène actuelle en utilisant SetLocalPlayerTransform().
API | Description |
---|---|
public static SetLocalPlayerTransform($transform: UnityEngine.Transform):void | Fonction pour changer la position de lecture audio du joueur local |
❗️ Avertissement SetLocalPlayerTransform() doit être appelé quelque temps après VoiceChatController.OnInitializedEvent(true) lorsque le chat vocal est initialisé.
1) Ci-dessous un exemple de script pour la fonction de changement de position de la voix.
Description du code
- Lorsque la scène commence, créez un objet de jeu appelé voiceTransformObject dans le Start() fonction et enregistrez le Transform dans voiceTransform.
- Lorsque le chat vocal OnInitialized est appelé, veuillez appliquer les paramètres suivants :
- Définissez le chat vocal en mode audio spatial 3D via SetAudioMode(AudioMode.Directional).
- Définissez la position du chat vocal du joueur local sur voiceTransform via VoiceChatController.SetLocalPlayerTransform().
- buttonCloserTransform définit la position de voiceTransform à l'origine (0, 0, 0) lorsque le bouton est cliqué.
- buttonFartherTransform définit la position de voiceTransform à (10, 0, 0) lorsque le bouton est cliqué.
2) Enregistrez le bouton sur le Canvas dans la scène pour buttonCloserTransform et buttonFartherTransform du composant VoiceTransformSample.
3) Si vous l'exécutez sur votre téléphone mobile en utilisant le code QR ou le lien de test, vous pouvez vérifier ce qui suit.
- Lorsque vous appuyez sur le bouton Plus près, votre voix semblera plus proche des autres.
- Lorsque vous appuyez sur le bouton Plus loin, votre voix sera entendue de loin par les autres.