Puede ser un desafío localizar amigos en la experiencia. El módulo SpawnWithFriends developer module mueve automáticamente a los jugadores que aparecen cerca de uno de sus amigos presentes en la experiencia. Este módulo también se puede configurar para teletransportar a un jugador por comando en lugar de automáticamente.
Uso del Módulo
Instalación
Para usar el módulo SpawnWithFriends 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 Creator Store.

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

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

En la ventana Explorer, mueve todo el modelo SpawnWithFriends a ReplicatedStorage. Al ejecutar la experiencia, el módulo comenzará a funcionar.
Áreas de Aparecimiento Restringidas
Este módulo puede resultar en que los jugadores aparezcan en áreas restringidas como salas VIP, espacios solo por acceso, etc. Para evitar que los jugadores se teletransporten a estas áreas:
Rellena el área restringida con bloques invisibles Anchored. Asegúrate de que CanCollide, CanTouch, y CanQuery estén desactivados para todos los bloques.

Bloque llenando toda la sala de prisión para evitar que los jugadores aparezcan dentro Usando la sección Tags de las propiedades de cada bloque, aplica la etiqueta RestrictedSpawnArea para que CollectionService las detecte.
Pega el siguiente código en un Script dentro de ServerScriptService.
Scriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local CollectionService = game:GetService("CollectionService")local SpawnWithFriends = require(ReplicatedStorage.SpawnWithFriends)local function validator(playerToTeleport, destinationPlayer, teleportationPoint)-- Itera a través de todas las partes etiquetadasfor _, area in CollectionService:GetTagged("RestrictedSpawnArea") dolocal relativePosition = area.CFrame:PointToObjectSpace(teleportationPoint.Position)local size = area.Sizelocal inXBounds = relativePosition.X < size.X / 2 and relativePosition.X > -size.X / 2local inZBounds = relativePosition.Z < size.Z / 2 and relativePosition.Z > -size.Z / 2if inXBounds and inZBounds thenreturn false -- El destino de aparición está dentro del área restringida; abortar teletransportaciónendendreturn true -- El destino de aparición no se superpone con ninguna área restringida; proceder con la teletransportaciónendSpawnWithFriends.setTeleportationValidator(validator)
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. Esta función solo se puede llamar desde un Script.
| Clave | Descripción | Predeterminado |
|---|---|---|
| teleportToFriendOnRespawn | Si se establece en false, el teletransporte a un amigo solo ocurrirá manualmente a través de teleportToRandomFriend. | true |
| teleportDistance | Qué tan lejos deberían aparecer los jugadores entre sí, medido en studs. | 5 |
| maxCharacterVelocity | Los personajes que se muevan más rápido que este valor no serán seleccionados como candidatos para el teletransporte, por ejemplo, aquellos en vehículos en movimiento. | 48 |
| bypassFriendshipCheck | Si se establece en true, todos los jugadores serán candidatos para el teletransporte, no solo los amigos. | false |
| showLogs | Si se deben mostrar o no los mensajes de registro en la salida. | false |
Scriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local SpawnWithFriends = require(ReplicatedStorage.SpawnWithFriends)SpawnWithFriends.configure({teleportToFriendOnRespawn = true,teleportDistance = 5,maxCharacterVelocity = 48,bypassFriendshipCheck = false,showLogs = false})
teleportToRandomFriend
teleportToRandomFriend(playerToTeleport: Player): boolean
Activa manualmente el teletransporte de un jugador a uno de sus amigos en la experiencia. Devuelve un booleano que indica si el teletransporte fue exitoso o no; el fallo en el teletransporte puede ser causado por la ausencia de amigos en el servidor o la incapacidad de encontrar un punto de teletransporte sin obstáculos. Esta función solo se puede llamar desde un Script.
setTeleportationValidator
setTeleportationValidator(validator: function)
Te permite realizar verificaciones personalizadas antes del teletransporte al enganchar una función de retorno de llamada de validación. La devolución de llamada recibe tres parámetros:
| Parámetro | Descripción |
|---|---|
| playerToTeleport | Referencia al Player que está siendo teletransportado. |
| destinationPlayer | Referencia al Player objetivo al que playerToTeleport está siendo teletransportado. |
| teleportationPoint | CFrame a donde playerToTeleport se está teletransportando. |
Esta función y su devolución de llamada solo se pueden usar en un Script y la devolución de llamada devuelve un booleano que indica si el teletransporte debe proceder. Por ejemplo, la lógica de return en la siguiente función de validación asegura que el jugador que aparece y el jugador de destino estén en el mismo equipo.
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SpawnWithFriends = require(ReplicatedStorage.SpawnWithFriends)
-- Teletransporta jugadores solo si están en el mismo equipo
local function validator(playerToTeleport, destinationPlayer, teleportationPoint)
return playerToTeleport.Team == destinationPlayer.Team
end
SpawnWithFriends.setTeleportationValidator(validator)