Può essere impegnativo localizzare gli amici in-experience. Il SpawnWithFriends modulo sviluppatore si muove automaticamente di spawning players vicino a uno dei loro amici presenti nell'esperienza. Questo modulo può anche essere configurato per teletrasportare un giocatore in comando invece di automaticamente.
Uso del modulo
Installazione
Per utilizzare il modulo SpawnWithFriends in un'esperienza:
Dalla Visualizza scheda, apri la Toolbox e seleziona la scheda Creator Store .
Assicurati che la classificazione Modelli sia selezionata, quindi fai clic sul pulsante Vedi tutto per Categorie.
Individua e fai clic sul riquadro Moduli di Piastrella.
Individua il Spawn With Friends modulo e fai clic su di esso, o trascinalo nella vista 3D.
Nella finestra Explorer, sposta l'intero modello SpawnWithFriends in ServerScriptService. Al suo esecuzione, il esperienzasi distribuirà su varie servizi e inizierà ad essere eseguito.
Aree di spawn limitate
Questo modulo può comportare il spawn di giocatori in aree limitate come VIP room, aree di accesso, ecc. Per prevenire i giocatori dal teletrasportarsi in queste aree:
Riempi l'area restrizionata con blocchi invisibili Anchored . Assicurati che CanCollide , CanTouch e 1> Class.BasePart.CanQueue|CanQueue1> siano disabilitati per tutti i bl
Usando la sezione Tag delle proprietà di ogni blocco, o il Tag Editor del Studio, applica il tag RestrictedSpawnArea in modo che Class.CollectionService lo rilevi.
Incolla il seguente codice in un Script entro ServerScriptService .
Scriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local CollectionService = game:GetService("CollectionService")local SpawnWithFriends = require(ReplicatedStorage:WaitForChild("SpawnWithFriends"))local function validator(playerToTeleport, destinationPlayer, teleportationPoint)-- itera attraverso tutte le parti contrassegnatefor _, 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 -- La destinazione di spawn è all'interno dell'area di restrizione; annulla la teletrasportazioneendendreturn true -- La destinazione di spawn non si sovrappone a nessuna area restretta; procedi con la teletrasportazioneendSpawnWithFriends.setTeleportationValidator(validator)
Riferimento API
Funzioni
configurare
Sovrascrivi le opzioni di configurazione predefinite attraverso le seguenti chiavi / valori nella tabella config. Questa funzione può essere chiamata solo da un Script .
Chiave | Descrizione | Predefinito |
---|---|---|
teleportToFriendOnRespawn | Se impostato su false , la teletrasportazione a un amico avverrà solo manualmente tramite teleportToRandomFriend . | vero |
teleportDistance | Quanto lontano i giocatori dovrebbero essere da uno l'altro, misurato in studs. | 5 |
maxCharacterVelocity | I personaggi in movimento più velocemente di questo valore non saranno selezionati come candidati di teletrasporto, ad esempio quelli nei veicoli in movimento. | 48 |
bypassFriendshipCheck | Se impostato su true, tutti i giocatori saranno candidati per la teletrasportazione, non solo amici. | falso |
showLogs | Indipendentemente dal fatto di visualizzare o meno i messaggi di registro nell'Output. | falso |
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SpawnWithFriends = require(ReplicatedStorage:WaitForChild("SpawnWithFriends"))SpawnWithFriends.configure({teleportToFriendOnRespawn = true,teleportDistance = 5,maxCharacterVelocity = 48,bypassFriendshipCheck = false,showLogs = false})
teleportToRandomFriend
Attiva manualmente la teletrasportazione di un giocatore a uno dei suoi amici nell'esperienza. Ritorna un booleto che indica se o no la teletrasportazione ha avuto successo; il mancato teletrasporto può essere causato dalla mancanza di amici nel server o dall'incapacità di trovare un punto di teletrasporto non bloccato. Questa funzione può essere chiamata solo da un Script .
setTeleportationValidate
Consente di eseguire controlli di pre-teletrasporto personalizzati aggiungendo una funzione di richiamata valida. La funzione di richiamata riceve tre parametri:
Parametro | Descrizione |
---|---|
playerToTeleport | Riferimento al Player che viene teletrasportato. |
destinationPlayer | Riferimento al target Player che playerToTeleport sta essere teletrasportato. |
teleportationPoint | CFrame in cui playerToTeleport si teletrasporta. |
Questa funzione e il suo callback possono essere utilizzati solo in un Script e il callback restituisce un booleto che indica se la teletrasportazione dovrebbe procedere. Ad esempio, la logica return seguente nella funzione di validazione garantisce che il giocatore di destinazione e il giocatore di origine siano sullo stesso team.
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SpawnWithFriends = require(ReplicatedStorage:WaitForChild("SpawnWithFriends"))
-- Teletrasporta i giocatori solo se sono nello stesso team
local function validator(playerToTeleport, destinationPlayer, teleportationPoint)
return playerToTeleport.Team == destinationPlayer.Team
end
SpawnWithFriends.setTeleportationValidator(validator)