Barre d'émote

Les émoticônes sont un élément essentiel de toute expérience sociale. Le module de développement EmoteBar vise à fournir aux joueurs un moyen accessible et personnalisable de faciliter une interaction sociale significative.

Utilisation du module

Installation

Pour utiliser le module EmoteBar dans une expérience :

  1. Dans l'onglet Voir, ouvrez la Boîte à outils et sélectionnez l'onglet Marketplace.

    Bouton activer/désactiver la Boîte à outils dans Studio
  2. Assurez-vous que le filtre Modèles est sélectionné, puis cliquez sur le bouton Voir tout pour afficher les catégories.

  3. Localisez et cliquez sur la vignette MODULES DEV.

  4. Localisez le module Emote Bar et cliquez dessus, ou faites-le glisser dans la visualisation 3D.

  5. Dans la fenêtre Explorateur, déplacez l'intégralité du modèle EmoteBar dans ServerScriptService. Lors de l'exécution de l'expérience, le module se distribuera lui-même vers divers services et commencera à s'exécuter.

Paramétrage

Le module est pré-figuré avec 7 emotes et peut être facilement personnalisé avec vos propres emotes et vos options d'affichage. Par ailleurs, si le joueur possède des emotes d'événements Roblox précédents tels que Lil Nas X, Royal Blood ou Twenty One Pilots, ces emotes seront automatiquement ajoutées à la liste des emotes disponibles.

  1. Dans ServerScriptService, créez un nouveau Script et renommez-le ConfigureEmotes.

  2. Collez le code suivant dans le nouveau script ConfigureEmotes. Le useDefaultEmotes paramètre de false est prioritaire sur les emotes par défaut et vous permet de définir les emotes personnalisés via la fonction setEmotes.

    Script - ConfigureEmotes

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
    EmoteBar.configureServer({
    useDefaultEmotes = false,
    })
    EmoteBar.setEmotes({
    {
    name = "Hello",
    animation = "rbxassetid://3344650532",
    image = "rbxassetid://7719817462",
    defaultTempo = 1,
    },
    {
    name = "Applaud",
    animation = "rbxassetid://5915693819",
    image = "rbxassetid://7720292217",
    defaultTempo = 2,
    },
    })

Méga Emotes

Un méga emote se forme lorsque plusieurs joueurs dans la même zone exécutent la même emote en même temps. Au fur et à mesure que les joueurs se joignent à l'événement, la méga emote s'agrandit. Au fur et à mesure que les joueurs cessent d'exécuter l'emote, la méga emote se réduit jusqu'à disparaître.

Tempo

Le tempo d'emote est la vitesse à laquelle elle est jouée lorsque l'on appuie une fois sur son bouton. La vitesse par défaut d'emote est déterminée par son defaultTempo. La vitesse d'une emote peut être augmentée ou diminuée en tapant plus ou moins vite sur son bouton.

Référence API

Types

Émote

Chaque emote est représentée par un dictionnaire contenant les paires clé-valeur suivantes :

CléTypeDescription
namechaîneNom d'Emote, par exemple "Shrug".
animationchaîneID de l'élément pour l'animation de l'emote.
imagechaîneID de l'élément pour l'image de l'emote dans le GUI.
defaultTempoVector3int16Facteur de vitesse par défaut auquel l'animation de l'emote doit être jouée. Par exemple, un tempo de 2 jouera l'animation à deux fois sa vitesse normale. Doit être supérieur à 0.
isLockedintIndique si l'emote est « verrouillée » et ne peut pas être activée.

Enums

EmoteBar.GuiType

NomRésumé
EmoteBarForme par défaut où les emotes sont affichées dans une barre en bas de l'écran, séparées en « pages » individuelles.
EmoteWheelVariante où les emotes sont affichées dans un anneau lorsqu'un joueur clique ou tape sur son personnage.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.configureClient({
guiType = EmoteBar.GuiType.EmoteWheel,
})

Fonctions

configureServer

configureServer(config:table):nil

Remplace les options de configuration par défaut côté serveur par les clés/valeurs suivantes du tableau config. Cette fonction ne peut être lancée qu'à partir d'un Script et les modifications seront automatiquement répercutées sur tous les clients.

CléDescriptionPar défaut
useDefaultEmotesIndique si les émoticônes par défaut fournies sont incluses ou non.true
useMegaEmotesActive ou désactive la fonctionnalité des ](#mega-emotes)méga emotes[.true
emoteMinPlayersNombre minimum de joueurs exécutant la même emote pour contribuer à une méga emote.3
emoteMaxPlayersNombre maximum de joueurs exécutant la même emote pour contribuer à une méga emote.50
playParticlesActive ou désactive les emotes que les joueurs jouent sous forme de particules flottantes au-dessus de leur tête.true
sendContributingEmotesActive ou désactive l'envoi d'une petite icône emote pour contribuer à la méga emote.true
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.configureServer({
emoteMinPlayers = 2,
playParticles = false,
})

configureClient

configureClient(config:table):nil

Remplace les options de paramétrage par défaut du côté client par le biais des clés/valeurs suivantes dans le tableau config. Cette fonction peut uniquement être appelée à partir d'un LocalScript. En fonction de la valeur de guiType, les options dans les onglets indiqués s'appliquent également.

Généralités

CléDescriptionPar défaut
guiTypeContrôle la forme que prendra l'interface graphique pour afficher les emotes (EmoteBar.GuiType).EmoteBar
useTempoActive ou désactive la fonction de ](#tempo)tempo[ qui permet aux utilisateurs de contrôler la vitesse ou la lenteur de leurs emotes en activant la même emote de façon répétée et rythmée.true
tempoActivationWindowTemps, en secondes, dont dispose l'utilisateur entre deux activations séquentielles d'une emote pour que celle-ci soit prise en compte dans le tempo.3
lockedImageImage pour afficher les emotes verrouillées par-dessus."rbxassetid://6905802778"

EmoteBar

CléDescriptionPar défaut
maxEmotesPerPageNombre maximum d'émoticônes affichées à la fois. Les écrans plus petits afficheront automatiquement moins d'emotes.4
emoteBarPosLandscapePosition de la barre d'emote en mode paysage (UDim2).(0.5, 0, 1, -16)
emoteBarPosPortraitPosition de la barre emote en mode portrait (UDim2).(0.5, 0, 1, -100)
useEmoteHotkeysIndique si les touches de raccourci emote sont utilisées. Si true, cela permet de lier 1, 2, 3, 4, etc. comme touches de raccourci pour la barre d'emote. Seules les touches numériques 1 à 9 sont prises en charge.true
usePageHotkeysSi les touches de raccourci de la page sont utilisées. Si true, nextPageKey et prevPageKey sont utilisés pour passer d'une page à l'autre.true
prevPageKeyLa clé utilisée pour revenir à la page précédente des emotes (Enum.KeyCode).Q
nextPageKeyLa clé utilisée pour passer à la page suivante des emotes (Enum.KeyCode).E
leftArrowImageImage de la flèche gauche (page précédente)."rbxassetid://6998633654"
rightArrowImageImage pour la flèche droite (page suivante)."rbxassetid://6998635824"

EmoteWheel

CléDescriptionPar défaut
closeImageImage du bouton de fermeture de la roue des émoticônes, placée au-dessus de l'image closeBackgroundImage."rbxassetid://7027440823"
closeBackgroundImageImage de fond pour le bouton de fermeture de la roue de l'emote."rbxassetid://7027440823"
emoteHoverImageImage pour l'indication au survol de l'emote sélectionnée dans la roue."rbxassetid://7344843157"
LocalScript - Emote Bar

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.configureClient({
guiType = EmoteBar.GuiType.EmoteBar,
maxEmotesPerPage = 6,
nextPageKey = Enum.KeyCode.Z,
prevPageKey = Enum.KeyCode.C,
})
LocalScript - Emote Wheel

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.configureClient({
guiType = EmoteBar.GuiType.EmoteWheel,
})

setEmotes

setEmotes(emotes:table):nil

Définit les emotes personnalisées à utiliser. Ceux-ci seront ajoutés aux valeurs par défaut si useDefaultEmotes est true, ou remplaceront les valeurs par défaut si useDefaultEmotes est false. Cette fonction ne peut être lancée qu'à partir d'un Script et les modifications seront automatiquement répercutées sur tous les clients.

Voir Emote pour la structure de chaque Emote transmise à cette fonction.

Script - ConfigureEmotes

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.configureServer({
useDefaultEmotes = false,
})
EmoteBar.setEmotes({
{
name = "Hello",
animation = "rbxassetid://3344650532",
image = "rbxassetid://7719817462",
defaultTempo = 1,
},
{
name = "Applaud",
animation = "rbxassetid://5915693819",
image = "rbxassetid://7720292217",
defaultTempo = 2,
},
})

setGuiVisibility

setGuiVisibility(visible:boolean):nil

Affiche ou masque la GUI des emotes. Cette fonction ne peut être lancée qu'à partir d'un LocalScript sur un client spécifique.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.setGuiVisibility(false)

getEmote

getEmote(emoteName:string):table

obtenir une Emote par son nom. Retourne nil si l'Emote est introuvable. Cette fonction ne peut être lancée qu'à partir d'un LocalScript sur un client spécifique.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
local shrug = EmoteBar.getEmote("Shrug")

playEmote

playEmote(emote:Emote):nil

Joue l'Emote donnée et déclenche l'événement emotePlayed sur le serveur, s'il est connecté. Cette fonction ne peut être lancée qu'à partir d'un LocalScript sur un client spécifique.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
local shrug = EmoteBar.getEmote("Shrug")
EmoteBar.playEmote(shrug)

lockEmote

lockEmote(emoteName:string):nil

Verrouille l'Emote avec le nom donné. Cette fonction ne peut être lancée qu'à partir d'un LocalScript sur le client.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.lockEmote("Applaud")

unlockEmote

unlockEmote(emoteName:string):nil

Déverrouille l'Emote avec le nom donné. Cette fonction ne peut être lancée qu'à partir d'un LocalScript sur le client.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.unlockEmote("Applaud")

Événements

emotePlayed

emotePlayed(player:Player, emote :Emote): RBXScriptSignal

Se déclenche lorsqu'un client joue une emote. Cet événement peut uniquement être lié dans un LocalScript.

Paramètres
Joueur :PlayerJoueur qui a joué l'emote.
emote : EmoteEmote qui a été jouée.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.emotePlayed:Connect(function(player, emote)
print(player.Name, "played", emote.name)
end)

lockedEmoteActivated

lockedEmoteActivated(emote:Emote): RBXScriptSignal

Se déclenche lorsqu'un client clique sur une emote verrouillée. Cet événement peut uniquement être lié dans un LocalScript.

Paramètres
emote : EmoteEmote verrouillée qui a été activée.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local EmoteBar = require(ReplicatedStorage:WaitForChild("EmoteBar"))
EmoteBar.lockedEmoteActivated:Connect(function(emote)
print(Players.LocalPlayer, "clicked", emote.name)
end)