Localizador de Amigos

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Pode ser desafiador localizar amigos na experiência. O FriendsLocatormódulo de desenvolvedores permite que os jogadores facilmente encontrem e teletransportem para seus amigos dentro de um local.

Uso de Módulo

Instalação

Para usar o módulo FriendsLocator em uma experiência:

  1. Na aba Ver, abra a caixa de ferramentas e selecione a aba Loja do Criador.

    Toolbox toggle button in Studio
  2. Certifique-se de que a classificação Modelos foi selecionada, então clique no botão Ver Todos para Categorias .

  3. Localize e clique no mosaico Modulos de Desenvolvedor .

  4. Localize o módulo Localizador de Amigos e clique nele, ou arraste e solte na janela de ver3D.

  5. Na janela Explorer, mova o modelo completo de FriendsLocator para ServerScriptService . Ao executar a experiência, o módulo será distribuído para vários serviços e começará a funcionar.

Testando no Studio

Para testar o módulo no Studio, o módulo FriendsLocator deve ser executado em uma simulação de múltiplos clientes, já que nenhum amigo estará presente em um teste solo.

  1. In StarterPlayerScripts , create a new LocalScript and rename it ConfigureFriendsLocator .

  2. Paste o seguinte código no novo ConfigureFriendsLocator script. A configuração showAllPlayers dentro da função configure garante que os locadores sejam mostrados para todos os usuários durante a testem em Studio, mas não em um local publicado.

    LocalScript - ConfigureFriendsLocator

    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
    FriendsLocator.configure({
    showAllPlayers = RunService:IsStudio(), -- Permite depuração no Studio
    })
  3. Na aba Teste, selecione a combinação a seguir para Clientes e Servidores , então clique no botão Iniciar . Três novas instâncias do Studio serão abertas; um servidor simulado e dois clientes simulados.

  4. Vá para uma das instâncias do Studio cliente , mova uma distância de 100 studs do outro personagem e você deve ver um ícone de localizador aparecer sobre sua cabeça.

Conectando a Eventos

O módulo FriendsLocator exibe eventos para que você possa introduzir comportamentos personalizados quando os usuários interagem com um ícone de localizador.

  1. Certifique-se de que você criou o ConfigureFriendsLocator script descrito em Testando no Studio.

  2. Adicione linhas 8 e 11-13 ao script:

    LocalScript - ConfigureFriendsLocator

    local RunService = game:GetService("RunService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
    FriendsLocator.configure({
    showAllPlayers = RunService:IsStudio(), -- Permite depuração no Studio
    teleportToFriend = false, -- Impedir o teleporte no clique/toque de ícone
    })
    FriendsLocator.clicked:Connect(function(player, playerCFrame)
    print("You clicked on locator icon for", player.DisplayName)
    end)
  3. Conduzir um teste mult클iente e clique no ícone de localizador de outro personagem. Observe que seu personagem não se teletransporta para essa localização, e os eventos são acionados para permitir que o tratamento personalizado de cliques de ícones seja permitido.

Interface do Localizador Personalizado

Se o estilo padrão não for ajustado à sua experiência, você pode substituir a interface de avatar padrão com sua própria interface.

Para substituir a interface padrão:

  1. Crie uma nova instância ScreenGui dentro do contêiner StarterGui .

  2. Crie uma instância de Frame chamada FriendLocator como filha da nova ScreenGui , então adicione elementos como 1> Class.ImageLabel|ImageFilters1> , 4> Class.TextLabel|TextLabels4> para projetar sua interface personalizada.

  3. Quando terminar, desabilite o pai ScreenGui para que o módulo não mostre a interface de localizador personalizado até necessário.

  4. (Opcional) Se você quiser o retrato de avatar do amizadee DisplayName para aparecer em algum lugar na interface personalizada, você pode colocar as seguintes instâncias dentro da janela de FriendLocator .

    O módulo procurará por esses itens e exibirá o retrato do avatar do amizadee/ou o nome de exibição respectivo.

Referência da API

Funções

configurar

configurar(config: table )

Substitui as opções de configuração padrão através das seguintes chaves/valores na tabela config.

ChaveDescriçãoPadrão
alwaysOnTopSe true , mostra ícones de localizador no topo de tudo, impedindo que sejam bloqueados por objetos 3D.verdade
showAllPlayersSe true , mostra locais para todos os jogadores, não apenas amigos; isso pode ajudar a verificar a funcionalidade do módulo no Studio.falso
teleportToFriendTeletransporta o personagem do jogador para a localização do amizadequando seu ícone de localizador é clicado ou tocado.verdade
thresholdDistanceDistância da câmera em que os ícones de localizador aparecem; amigos mais próximos que esta distância não exibirão ícones.100
maxLocatorsNúmero máximo de ícones de localizador mostrados em qualquer momento.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

clicou

Ocorre quando um ícone de localizador é clicado/ativado pelo jogador local. Este evento só pode ser conectado em um LocalScript.

Parâmetros
jogador: PlayerJogador que o ícone de localizador pertence.
playerCFrame: CFrameCFrame do jogador Humanoid.RootPart que o ícone de localizador pertence.
Script Local

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
local localPlayer = Players.LocalPlayer
FriendsLocator.clicked:Connect(function(player, playerCFrame)
-- Solicitar streaming em torno da localização do alvo
if workspace.StreamingEnabled then
local success, errorMessage = pcall(function()
localPlayer:RequestStreamAroundAsync(playerCFrame.Position)
end)
if not success then
print(errorMessage)
end
end
print("You clicked on locator icon for", player.DisplayName, "at position", playerCFrame.Position)
end)

visibility mudou

Solicitações de fire são disparadas quando um ícone de localizador é mostrado/escondido na tela do jogador local. Este evento só pode ser conectado em um LocalScript .

Parâmetros
jogador: PlayerPlayer objeto que o ícone de localizador pertence.
playerCFrame: CFrameCFrame do jogador Humanoid.RootPart que o ícone de localizador pertence.
isVisible: booleanSe o ícone de localizador está atualmente visível na tela do jogador local. Observe que isso ainda será true se alwaysOnTop estiver false e o localizador renderizando por trás de um objeto no mundo 3D.
Script Local

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)