Ubicador de amigos

Localizar amigos en una experiencia puede ser difícil. El módulo de desarrolladores FriendsLocator les permite a los jugadores encontrar a sus amigos y teletransportarse a su ubicación con facilidad dentro de un lugar.

Uso del módulo

Instalación

Sigue estos pasos para usar el módulo FriendsLocator en una experiencia:

  1. En la pestaña Ver, abre la Caja de herramientas y selecciona la pestaña Mercado.

    Botón de activación de Caja de herramientas en Studio
  2. Asegúrate de que la clasificación de Modelos esté seleccionada y, a continuación, haz clic en el botón Ver todo para las Categorías.

  3. Busca y haz clic en el mosaico MÓDULOS DE DESARROLLADORES.

  4. Busca el módulo Localizador de amigos y haz clic en él o arrástralo y suéltalo en la vista 3D.

  5. En la ventana del Explorador, mueve todo el modelo de FriendsLocator a ServerScriptService. Al ejecutar la experiencia, el módulo se distribuirá a varios servicios y comenzará a ejecutarse.

Pruebas en Studio

Para probar el módulo FriendsLocator en Studio, se debe ejecutar en una simulación de múltiples clientes, dado que ningún amigo estará presente en las pruebas de jugabilidad en solitario.

  1. En StarterPlayerScripts, crea un LocalScript nuevo y cámbiale el nombre a ConfigureFriendsLocator.

  2. Pega el siguiente código en el script ConfigureFriendsLocator nuevo. El ajuste showAllPlayers dentro de la función de configuración garantiza que los localizadores se muestren a todos los usuarios mientras se realizan pruebas en Studio, pero no en lugares publicados.

    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. En la pestaña Prueba, selecciona la siguiente combinación para Clientes y servidores y, luego, haz clic en el botón Iniciar. Se abrirán tres instancias nuevas de Studio: un servidor simulado y dos clientes simulados.

  4. Ve a cualquiera de las instancias de cliente de Studio y aléjate a una distancia de 100 studs de otro personaje. Verás que aparece un ícono de localización sobre su cabeza.

Conexión a eventos

El módulo FriendsLocator expone eventos para que puedas introducir comportamientos personalizados cuando los usuarios interactúan con un ícono de localización.

  1. Asegúrate de haber creado el script ConfigureFriendsLocator descrito en Pruebas en Studio.

  2. Añade las líneas 8 y 11 a 13 al 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. Realiza una prueba en varios clientes y haz clic en el ícono de localización de otro personaje. Ten en cuenta que tu personaje no se teletransporta a esa ubicación y que el evento se activa para permitir administrar los clics en los íconos de forma personalizada.

Interfaz de usuario de localización personalizada

Si el estilo predeterminado no se ajusta a tu experiencia, puedes reemplazar la interfaz de usuario predeterminada de retratos de avatares por tu propia interfaz de usuario.

Sigue estos pasos para reemplazar la interfaz de usuario predeterminada:

  1. Crea una instancia ScreenGui nueva dentro del contenedor StarterGui.

  2. Crea una instancia Frame llamada FriendLocator como elemento secundario de la ScreenGui nueva.

  3. Diseña tu interfaz de usuario personalizada al añadir ImageLabels, TextLabels, etc. al marco FriendLocator.

  4. Cuando termines, desactiva la ScreenGui principal para que el módulo no muestre la interfaz de usuario de localización personalizada hasta que sea necesaria.

  5. (Opcional) Si quieres que se muestre el retrato del avatar y el DisplayName de los amigos en algún lugar de la interfaz de usuario personalizada, puedes colocar las siguientes instancias dentro del marco FriendLocator.

    El módulo buscará estos elementos y mostrará el retrato del avatar o el nombre de visualización de los amigos, respectivamente.

Referencia API

Funciones

configure

configure(config:table):nil

Reemplaza las opciones de configuración predeterminadas a través de las siguientes claves o valores en la tabla config.

ClaveDescripciónDefault
alwaysOnTopSi se establece en true, muestra los íconos de localización sobre todo, lo que evita que los objetos del mundo 3D los bloqueen.true
showAllPlayersSi se establece en true, se muestran las ubicaciones de todos los jugadores, no solo de los amigos, lo que puede ayudar a verificar la funcionalidad del módulo en Studio.false
teleportToFriendTeletransporta al personaje del jugador a la ubicación de un amigo cuando hace clic en su ícono de localización o lo toca.true
thresholdDistanceEl umbral de distancia de la cámara en el que aparecen los íconos de localización; no se verán íconos de los amigos que estén más cerca de esta distancia.100
maxLocatorsIndica la cantidad máxima de íconos de localización que se pueden mostrar en un momento dado.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
})

Eventos

clicked

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

Se desencadena cuando el jugador local hace clic en un ícono de localización o lo activa. Este evento solo se puede conectar en un LocalScript.

Parámetros
player: PlayerEl jugador al que pertenece el ícono de localización.
playerCFrame: CFrameCFrame de la Humanoid.RootPart del jugador al que pertenece el ícono de localización.
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 desencadena cuando se muestra u oculta un ícono de localización en la pantalla del jugador local. Este evento solo se puede conectar en un LocalScript.

Parámetros
player: PlayerObjeto Player al que pertenece el ícono de localización.
playerCFrame: CFrameCFrame de la Humanoid.RootPart del jugador al que pertenece el ícono de localización.
isVisible: booleanIndica si el ícono de localización está visible en la pantalla del jugador local. Ten en cuenta que este parámetro seguirá siendo true si alwaysOnTop es false y el localizador se renderiza detrás de un objeto en el mundo 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)