Puede ser un desafío localizar amigos en la experiencia. El módulo FriendsLocator de desarrollador permite a los jugadores encontrar y teletransportarse fácilmente a sus amigos dentro de un lugar.
Uso del módulo
Instalación
Para usar el módulo FriendsLocator en una experiencia:
Desde el menú Ventana de Studio o la barra de herramientas de la pestaña Inicio, abre el Toolbox y selecciona la pestaña Tienda del Creador.

Asegúrate de que la clasificación de Modelos esté seleccionada, luego haz clic en el botón Ver Todo para Categorías.

Localiza y haz clic en el mosaico Paquetes.
Localiza el módulo Localizador de Amigos y haz clic en él, o arrástralo y suéltalo en la vista 3D.

En la ventana del Explorador, mueve todo el modelo FriendsLocator a ReplicatedStorage. Al ejecutar la experiencia, el módulo comenzará a funcionar.
Prueba en Studio
Para probar el módulo en Studio, el módulo FriendsLocator debe ejecutarse en una simulación de múltiples clientes, ya que no habrá amigos presentes en una prueba de juego en solitario.
En StarterPlayerScripts, crea un nuevo LocalScript y renómbralo como ConfigurarFriendsLocator.

Pega el siguiente código en el nuevo script ConfigurarFriendsLocator. La configuración showAllPlayers dentro de la función configure asegura que los localizadores se muestren para todos los usuarios mientras se prueba en Studio, pero no en un lugar publicado.
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Permite la depuración en Studio})Desde la mezzanine de Studio, inicia una simulación de múltiples clientes con 2 clientes. Se abrirán tres nuevas instancias de Studio; un servidor simulado y dos clientes simulados.

Ve a cualquiera de las instancias de cliente de Studio, muévete a una distancia de 100 studs del otro personaje, y deberías ver un icono de localizador aparecer sobre su cabeza.

Conectar a eventos
El módulo FriendsLocator expone eventos para que puedas introducir comportamientos personalizados cuando los usuarios interactúan con un icono de localizador.
Asegúrate de que has creado el script ConfigurarFriendsLocator descrito en pruebas en Studio.
Agrega las líneas 8 y 11-13 al script:
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Permite la depuración en StudioteleportToFriend = false, -- Previene el teletransporte al hacer clic/tocar el icono})FriendsLocator.clicked:Connect(function(player, playerCFrame)print("Hiciste clic en el icono de localizador de", player.DisplayName)end)Realiza una prueba de múltiples clientes y haz clic en el icono de localizador de otro personaje. Nota que tu personaje no se teletransporta a esa ubicación, y el evento se dispara para permitir un manejo personalizado de los clics en el icono.
UI de localizador personalizada
Si el estilo predeterminado no se ajusta a tu experiencia, puedes reemplazar la interfaz de usuario del retrato del avatar predeterminado con tu propia interfaz de usuario.

Para reemplazar la interfaz de usuario predeterminada:
Crea una nueva instancia de ScreenGui dentro del contenedor StarterGui.

Crea una instancia de Frame llamada FriendLocator como hija de la nueva ScreenGui, y luego agrega elementos como ImageLabels, TextLabels para diseñar tu interfaz de usuario personalizada.

Cuando termines, desactiva la ScreenGui principal para que el módulo no muestre la UI de localizador personalizada hasta que sea necesario.

(Opcional) Si deseas que el retrato del avatar y el DisplayName del amigo se muestren en algún lugar de la UI personalizada, puedes colocar las siguientes instancias dentro del marco FriendLocator.
- Un ImageLabel llamado Portrait.
- Un TextLabel llamado DisplayName.

El módulo buscará estos elementos y mostrará el retrato y/o el nombre de pantalla del amigo respectivamente.
Referencia de API
Funciones
configure
configure(config: table)
Sobrescribe las opciones de configuración predeterminadas a través de las siguientes claves/valores en la tabla config.
| Clave | Descripción | Predeterminado |
|---|---|---|
| alwaysOnTop | Si true, muestra los iconos de localizador encima de todo, impidiendo que sean bloqueados por objetos del mundo 3D. | true |
| showAllPlayers | Si true, muestra localizaciones para todos los jugadores, no solo amigos; esto puede ayudar a verificar la funcionalidad del módulo en Studio. | false |
| teleportToFriend | Teletransporta al personaje del jugador a la ubicación del amigo cuando se hace clic o se toca su icono de localizador. | true |
| thresholdDistance | Umbral de distancia de cámara en el cual aparecen los iconos de localizador; los amigos más cercanos que esta distancia no mostrarán iconos. | 100 |
| maxLocators | Número máximo de iconos de localizador que se muestran en un momento dado. | 10 |
LocalScript - ConfigureFriendsLocatorlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({alwaysOnTop = true,showAllPlayers = false,teleportToFriend = true,thresholdDistance = 100,maxLocators = 10})
Eventos
clicked
Se activa cuando un icono de localizador es clicado/activado por el jugador local. Este evento solo puede ser conectado en un LocalScript.
| Parámetros | |
|---|---|
| player: Player | Jugador al que pertenece el icono de localizador. |
| playerCFrame: CFrame | CFrame de la Humanoid.RootPart del jugador al que pertenece el icono de localizador. |
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
local localPlayer = Players.LocalPlayer
FriendsLocator.clicked:Connect(function(player, playerCFrame)
-- Solicitar transmisión alrededor de la ubicación objetivo
if Workspace.StreamingEnabled then
local success, errorMessage = pcall(function()
localPlayer:RequestStreamAroundAsync(playerCFrame.Position)
end)
if not success then
print(errorMessage)
end
end
print("Hiciste clic en el icono de localizador de", player.DisplayName, "en la posición", playerCFrame.Position)
end)
visibilityChanged
Se activa cuando un icono de localizador es mostrado/ocultado en la pantalla del jugador local. Este evento solo puede ser conectado en un LocalScript.
| Parámetros | |
|---|---|
| player: Player | Objeto Player al que pertenece el icono de localizador. |
| playerCFrame: CFrame | CFrame de la Humanoid.RootPart del jugador al que pertenece el icono de localizador. |
| isVisible: boolean | Si el icono de localizador es actualmente visible en la pantalla del jugador local. Ten en cuenta que esto 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.FriendsLocator)
FriendsLocator.visibilityChanged:Connect(function(player, playerCFrame, isVisible)
print("Visibilidad del icono de localizador para", player.DisplayName, ":", isVisible)
end)