Localisateur d'amis

Il peut être difficile de localiser des amis dans l'expérience. Le module développeur FriendsLocator developer module permet aux joueurs de trouver facilement et de se téléporter vers leurs amis à l'intérieur d'un lieu.

Utilisation du module

Installation

Pour utiliser le module FriendsLocator 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 Localisation des amis et cliquez dessus, ou faites un glisser-déposer dans la vue 3D.

  5. Dans la fenêtre Explorateur, déplacez l'intégralité du modèle FriendsLocator 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.

Test dans Studio

Pour tester le module dans Studio, le module FriendsLocator doit être exécuté dans une simulation multi-client, car aucun ami ne sera présent dans un test de jeu solo.

  1. Dans StarterPlayerScripts, créez un nouveau LocalScript et renommez-le ConfigureFriendsLocator.

  2. Collez le code suivant dans le nouveau script ConfigureFriendsLocator. Le paramètre showAllPlayers dans la fonction configurer garantit que les localisateurs sont affichés pour tous les utilisateurs pendant le test dans Studio, mais pas dans un emplacement publié.

    LocalScript - ConfigureFriendsLocator

    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
    FriendsLocator.configure({
    showAllPlayers = RunService:IsStudio(), -- Allows for debugging in Studio
    })
  3. Dans l'onglet Test, sélectionnez la combinaison pour Clients et Serveurs, puis cliquez sur le bouton Démarrer. Trois nouvelles instances de Studio s'ouvrent ; un serveur simulé et deux clients simulés.

  4. Accédez à l'une des instances client de Studio et déplacez-vous à une distance de 100 studs de l'autre personnage. Vous devriez voir une icône de localisation apparaître au-dessus de sa tête.

Se connecter aux événements

Le module FriendsLocator expose les événements afin que vous puissiez introduire des comportements personnalisés lorsque les utilisateurs interagissent avec une icône de localisation.

  1. Assurez-vous que vous avez créé le script ConfigureFriendsLocator décrit dans Test dans Studio.

  2. Ajouter les lignes 8 et 11-13 au script :

    LocalScript - ConfigureFriendsLocator

    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
    FriendsLocator.configure({
    showAllPlayers = RunService:IsStudio(), -- Allows for debugging in Studio
    teleportToFriend = false, -- Prevent teleport on icon click/tap
    })
    FriendsLocator.clicked:Connect(function(player, playerCFrame)
    print("You clicked on locator icon for", player.DisplayName)
    end)
  3. Effectuez un test multi-client et cliquez sur l'icône de localisation d'un autre personnage. Notez que votre personnage ne se téléporte pas vers cet emplacement, et que les déclencheurs d'événement permettent une gestion personnalisée des clics d'icône.

UI de localisation personnalisée

Si le style par défaut ne correspond pas à votre expérience, vous pouvez remplacer l'UI par défaut du portrait de l'avatar par votre propre UI.

Pour remplacer l'UI par défaut :

  1. Créez une nouvelle instance ScreenGui dans le conteneur StarterGui.

  2. Créez une instance nommée FriendLocator en tant qu'enfant de la nouvelle Frameinstance ScreenGui.

  3. Créez votre UI personnalisée en ajoutant ImageLabels, TextLabels, etc. au frame FriendLocator.

  4. Une fois terminé, désactivez le parent ScreenGui afin que le module n'affiche pas l'UI de localisation personnalisée jusqu'à ce que cela soit nécessaire.

  5. (Optionnel) Si vous souhaitez que le portrait de l'avatar de l'ami et DisplayName apparaissent quelque part dans l'UI personnalisée, vous pouvez placer les instances suivantes dans le frame FriendLocator.

    Le module recherchera ces objets et affichera le portrait de l'avatar de l'ami et/ou le nom d'affichage.

Référence API

Fonctions

configurer

configure(config:table):nil

Remplace les options de configuration par défaut par le biais des clés/valeurs suivantes dans le tableau config.

CléDescriptionPar défaut
alwaysOnTopSi true, affiche des icônes de localisation au-dessus de tout, ce qui les empêche d'être bloquées par des objets du monde 3D.true
showAllPlayersSi true, affiche les emplacements de tous les joueurs, et pas seulement des amis ; cela peut permettre de vérifier la fonctionnalité du module dans Studio.false
teleportToFriendTéléporte le personnage du joueur vers l'emplacement de l'ami quand on clique ou appuie sur son icône de localisation.true
thresholdDistanceDistance de la caméra à partir de laquelle les icônes de localisation apparaissent ; les icônes des amis plus proches ne s'afficheront pas.100
maxLocatorsNombre maximum d'icônes de localisation affichées en même temps.10
LocalScript - ConfigureFriendsLocator

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
FriendsLocator.configure({
alwaysOnTop = true,
showAllPlayers = false,
teleportToFriend = true,
thresholdDistance = 100,
maxLocators = 10
})

Événements

cliqué

clicked(player:Player, playerCFrame:CFrame): RBXScriptSignal

Se déclenche lorsqu'une icône de localisation est cliquée/activée par le joueur local. Cet événement peut uniquement être lié dans un LocalScript.

Paramètres
Joueur :Playerjoueur auquel appartient l'icône de localisation.
playerCFrame:CFrameCFrame du joueur Humanoid.RootPart auquel appartient l'icône de localisation.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
FriendsLocator.clicked:Connect(function(player, playerCFrame)
print("You clicked on locator icon for", player.DisplayName, "at position", playerCFrame.Position)
end)

visibilityChanged

visibilityChanged(player:Player, playerCFrame:CFrame, isVisible:boolean): RBXScriptSignal

Se déclenche lorsqu'une icône de localisation est affichée/masquée sur l'écran du joueur local. Cet événement peut uniquement être lié dans un LocalScript.

Paramètres
Joueur :PlayerPlayerobjet auquel appartient l'icône de localisation.
playerCFrame :CFrameCFrame du joueur Humanoid.RootPart auquel appartient l'icône de localisation.
isVisible : booleanIndique si l'icône de localisation est actuellement visible sur l'écran du joueur local. Notez que ce sera toujours true si alwaysOnTop est falseet que le localisateur s'affiche derrière un objet dans le monde 3D.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
FriendsLocator.visibilityChanged:Connect(function(player, playerCFrame, isVisible)
print("Visibility of locator icon for", player.DisplayName, ":", isVisible)
end)