Chat basato sulla prossimità

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Questo esempio mostra come implementare un chat esclusivo per gli utenti che sono vicini tra loro nel mondo 3D. Estende il callback con una funzione utilizzando TextSource per identificare le posizioni di un utente che potrebbe essere un potenziale destinatario del messaggio. Se questa funzione restituisce false, significa che l'utente si trova oltre la distanza valida preimpostata dal mittente del messaggio, quindi il sistema non consegna il messaggio a quell'utente.

Aggiungi quanto segue a un Script in ServerScriptService:

Server

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Ottieni il canale di chat per il chat basato sulla prossimità
-- Puoi sostituire questo canale generale con un canale dedicato
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
-- Funzione per ottenere la posizione del personaggio di un utente
local function getPositionFromUserId(userId: number)
-- Ottieni il giocatore associato all'ID utente fornito
local targetPlayer = Players:GetPlayerByUserId(userId)
-- Se il giocatore esiste, ottieni la posizione del suo personaggio
if targetPlayer then
local targetCharacter = targetPlayer.Character
if targetCharacter then
return targetCharacter:GetPivot().Position
end
end
-- Restituisci una posizione predefinita se il giocatore o il personaggio non possono essere trovati
return Vector3.zero
end
-- Imposta il callback per il canale generale per controllare la consegna dei messaggi
generalChannel.ShouldDeliverCallback = function(textChatMessage: TextChatMessage, targetTextSource: TextSource)
-- Ottieni le posizioni del mittente del messaggio e del destinatario
local sourcePos = getPositionFromUserId(textChatMessage.TextSource.UserId)
local targetPos = getPositionFromUserId(targetTextSource.UserId)
-- Consegna il messaggio se la distanza tra mittente e destinatario è inferiore a 50 unità
return (targetPos - sourcePos).Magnitude < 50
end
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.