Localizador de amizades

Pode ser desafiador localizar amigos dentro da experiência. O módulo de desenvolvedor FriendsLocator permite que os jogadores encontrem e se teletransportem facilmente até seus amigos dentro de um local.

Uso do módulo

Instalação

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

  1. Na aba Exibir, abra a Caixa de ferramentas e selecione a aba Mercado.

    Botão de ativação da Caixa de ferramentas no Studio.
  2. Verifique se a ordenação de Modelos está selecionada e, em seguida, clique no botão Exibir Tudo para Categorias.

  3. Encontre e clique no painel DEV MODULES

  4. Localize o módulo Localizador de amigos e clique nele ou arraste e solte-o na visualização 3D.

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

Testes no Studio

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

  1. Em StarterPlayerScripts, crie um novo Class. LocalScript e renomeie-o para ConfigureFriendsLocator.

  2. Cole o seguinte código dentro do novo script ConfigureFriendsLocator. A configuração showAllPlayers dentro da função configurar garante que os localizadores sejam mostrados para todos os usuários durante os testes no 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(), -- Allows for debugging in Studio
    })
  3. Na aba Teste, selecione a seguinte combinação para Clientes e servidores e, em seguida, clique no botão Iniciar. Três novas instâncias do Studio serão abertas; um servidor simulado e dois clientes simulados.

  4. Entre em uma das instâncias de cliente do Studio, mova-se até uma distância de 100 rebites do outro personagem e você deverá ver um ícone localizador aparecer sobre a sua cabeça.

Conexão com eventos

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

  1. Certifique-se de ter criado o script ConfigureFriendsLocator descrito em Testes no Studio.

  2. Adicione as 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(), -- Allows for debugging in Studio
    teleportToFriend = false, -- Prevent teleport on icon click/tap
    })
    FriendsLocator.clicked:Connect(function(player, playerCFrame)
    print("You clicked on locator icon for", player. DisplayName)
    end)
  3. Realize um teste multicliente e clique no ícone localizador de outro personagem. Observe que seu personagem não se teletransporta para esse local, e o evento é acionado para permitir o processamento personalizado de cliques nos ícones.

IU do localizador personalizado

Se o estilo padrão não se adequar à sua experiência, você pode substituir a interface de usuário padrão de retrato do avatar pela sua própria IU.

Para substituir a IU padrão:

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

  2. Crie uma instância Class. Frame chamada FriendLocator como um filho da nova Class. ScreenGui.

  3. Crie sua IU personalizada adicionando Class. ImageLabel|ImageLabels, Class. TextLabel|TextLabels etc. ao quadro do FriendLocator.

  4. Quando terminar, desabilite o pai Class. ScreenGui para que o módulo não mostre a IU do localizador personalizado até que seja necessário.

  5. (Opcional) Se você quiser que o retrato do avatar e Class. Player. DisplayName|DisplayName do amigo sejam exibidos em algum lugar na IU, pode colocar as seguintes instâncias dentro do quadro do FriendLocator.

    • Um Class. ImageLabel do nome Portrait.
    • Um Class. TextLabel do nome DisplayName.

    O módulo irá pesquisar esses itens e exibir o retrato do avatar e/ou o nome de exibição do amigo, respectivamente.

Referência de API

Funções

configurar

configure(config:table):nil

Substitui as opções de configuração padrão por meio das chaves-valor na tabela config.

ChaveDescriçãoPadrão
alwaysOnTopSe true, mostra ícones localizadores em cima de tudo, evitando que sejam bloqueados por objetos do universo 3D.true
showAllPlayersSe true, mostra locais para todos os jogadores, não apenas amigos; isso pode ajudar a verificar a funcionalidade do módulo no Studio.false
teleportToFriendTeletransporta o personagem do jogador para a localização do amigo quando o ícone localizador dele é clicado ou tocado.true
thresholdDistanceLimite de distância da câmera no qual os ícones localizadores aparecem; amigos mais próximos do que essa distância não exibirão ícones.100
maxLocatorsNúmero máximo de ícones localizadores mostrados a 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

clicados

clicked(player:Class. Player, playerCFrame:CFrame): RBXScriptSignal

É acionado quando um ícone localizador é clicado/ativado pelo jogador local. O evento só pode ser conectado a um Class. LocalScript.

Parâmetros
jogador: Class. PlayerJogador ao qual o ícone localizador pertence.
playerCFrame: CFrameCFrame do Class. Humanoid. RootPart do jogador ao qual o ícone localizador pertence.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
FriendsLocator.clicked:Connect(function(player, playerCFrame)
print("You clicked on locator icon for", player. DisplayName, "at position", playerCFrame. Position)
end)

visibilityChanged

visibilityChanged(player:Class. Player, playerCFrame:CFrame, isVisible:boolean): RBXScriptSignal

É acionado quando um ícone localizador é exibido/ocultado na tela do jogador local. O evento só pode ser conectado a um Class. LocalScript.

Parâmetros
jogador: Class. PlayerClass. Player objeto ao qual o ícone localizador pertence.
playerCFrame: CFrameCFrame do Class. Humanoid. RootPart do jogador ao qual o ícone localizador pertence.
isVisible: booleanSe o ícone localizador está visível no momento na tela do jogador local. Observe que isso ainda será true se alwaysOnTop for false, e o localizador será renderizado atrás de um objeto no mundo 3D.
LocalScript

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)