Ferramentas no jogo

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

Ferramentas no jogo Tools são ferramentas interativas que os jogadores podem equipar em sessões, como armas, varinhas mágicas, lanternas, chaves e muito mais. Você pode projetar ferramentas e incluí-las no inventário de um jogador ou colocá-las ao redor do mundo como itens coletáveis.

Criar uma ferramenta no jogo

O objeto Tool é a base de qualquer ferramenta no Roblox, então você precisará criar um. É mais fácil visualizar como uma ferramenta se parece projetando-a no Workspace, e depois você pode torná-la um item de inventário ou um item ganho/comprado.

  1. Na hierarquia do Explorer, passe o mouse sobre Workspace, clique no botão e insira um Tool.

    Objeto ferramenta criado no espaço de trabalho
  2. Com o novo Tool selecionado, acesse a janela de Propriedades e personalize como a ferramenta aparecerá no inventário do jogador:

    • TextureId — Especifica o ID do ativo de imagem para a ferramenta no inventário de um jogador.
    • ToolTip — O nome da dica de ferramenta ao passar o mouse sobre a ferramenta no inventário de um jogador.
  3. Decida se a ferramenta será uma ferramenta física no ambiente 3D (mais comum) ou uma ferramenta não física que simplesmente ocupa o inventário de um jogador e responde à sua entrada.

Ferramenta física

Depois de criar a instância Tool para uma ferramenta física, você precisará adicionar partes/malhas para compor sua aparência no mundo 3D. Você também precisará incluir um cabo que os personagens dos jogadores seguram.

Adicionar partes/malhas

Ferramentas no jogo podem consistir em uma ou mais Parts e/ou MeshParts. Se você construir a ferramenta de várias peças, lembre-se de conectá-las todas usando WeldConstraints ou outros mecanismos de restrição para que a ferramenta permaneça intacta como uma unidade enquanto o jogador a carrega.

Seletores de restrição indicados na barra de ferramentas do Studio

Definir o cabo

Para permitir que os jogadores carreguem ferramentas, uma parte da ferramenta precisa ser nomeada Handle. É aqui que a ferramenta se conectará à parte do corpo RightHand do modelo do personagem (R15) ou à parte Right Arm (R6).

Se a ferramenta for composta por apenas uma MeshPart, basta nomear essa parte de Handle. Caso contrário, você pode incluir uma parte separada chamada Handle como um filho direto do pai Tool e, em seguida, conectá-la a outra parte com um WeldConstraint ou mecanismo de restrição.

O seguinte exemplo mostra uma ferramenta com três instâncias: a malha Handle, um RopeConstraint e uma malha de lanterna que pendura da corda.

Ajustar a posição/orientação do cabo

A propriedade Grip da ferramenta é um CFrame que especifica como a ferramenta está posicionada e orientada em relação ao personagem que a segura.

Como a posição/orientação ideal do cabo é diferente para cada ferramenta, você precisará experimentar com os valores até que o cabo da sua ferramenta pareça correto. O seguinte exemplo mostra configurações de Grip possíveis incorretas e corretas para a lanterna pendurada:

Lanterna arrastando no chão com Grip.Position de (0, -2, 0) e Grip.Orientation de (-90, 0, 0)
Lanterna na frente do personagem com Grip.Position de (0, -1.5, 0) e Grip.Orientation de (25, 0, 0)

Ferramenta não física

Uma Tool não física simplesmente ocupa o inventário de um jogador e responde à sua entrada. Por exemplo, um jogo de interpretação de papéis pode apresentar uma série de feitiços mágicos que os jogadores podem "lançar" através de seu inventário.

Ferramentas não físicas não requerem nenhuma composição 3D e não utilizam uma parte Handle, então você deve desativar a propriedade RequiresHandle da ferramenta:

Adicionar ferramentas a um jogo

Depois de criar sua ferramenta no jogo, você precisará colocá-la na área correta da hierarquia do Explorer. Onde você coloca a ferramenta na hierarquia depende de seu uso pretendido.

Inventário do jogador

Se você quiser que todos os jogadores comecem com uma ferramenta em seu inventário, coloque-a dentro do contêiner StarterPack. Quando qualquer jogador aparecer, o sistema copia a ferramenta para seu Backpack. A partir daí, o jogador pode equipar a ferramenta clicando em seu ícone no inventário ou pressionando a tecla de atalho associada, como 1 ou 2.

Observe que as ferramentas são copiadas para o inventário do jogador (Backpack) na ordem em que foram adicionadas ao StarterPack. Para uma ordenação mais controlada, você pode adicionar um LocalScript ao StarterPack que move temporariamente as ferramentas para ReplicatedStorage e depois as reparenta para Backpack na ordem especificada na tabela order.

Reordenar Inventário
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local order = {"WaterSpell", "FireSpell", "AirSpell", "EarthSpell"}
local backpack = script.Parent
for _, item in backpack:GetChildren() do
if item:IsA("Tool") then
item.Parent = ReplicatedStorage
end
end
-- Reparentar ferramentas para a mochila na ordem especificada
for i = 1, #order do
local tool = ReplicatedStorage:FindFirstChild(order[i])
if tool then
tool.Parent = backpack
end
end

Ferramenta colecionável

Se você quiser permitir que os jogadores coletem ferramentas físicas enquanto exploram o mundo 3D, coloque as ferramentas no Workspace, assim como objetos 3D normais. Ferramentas coletadas serão automaticamente equipadas e adicionadas ao inventário do jogador (você não precisa adicionar detecção de colisão extra para que os personagens peguem a ferramenta).

Como mencionado na seção adicionar partes/malhas, as partes da ferramenta não devem estar tipicamente Anchored, uma vez que os personagens dos jogadores ficarão presos no lugar ao pegar ou equipar uma ferramenta ancorada. No entanto, se você quiser ancorar uma ferramenta colecionável a um lugar específico no mundo 3D, como flutuando ligeiramente acima do chão, você pode adicionar o seguinte Script à ferramenta para desancorar suas partes ao serem coletadas.

Desancorar Ferramenta ao Equipar/Coletar
local tool = script.Parent
tool.Equipped:Connect(function()
for _, part in tool:GetDescendants() do
if part:IsA("BasePart") and part.Anchored then
part.Anchored = false
end
end
end)

Ferramenta ganha/comprada

Se você quiser definir ferramentas como prêmios para quando os jogadores realizam tarefas, ou oferecer ferramentas à venda em uma loja dentro do jogo, coloque essas ferramentas dentro de ReplicatedStorage. A partir daí, você pode Clone() uma ferramenta para a Backpack do jogador no momento apropriado.

Clonar Ferramenta para o Inventário do Jogador
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local backpack = player:WaitForChild("Backpack")
-- Criar um clone da ferramenta
local tool = ReplicatedStorage:FindFirstChild("WaterSpell")
if tool then
local clone = tool:Clone()
clone.Parent = backpack -- Adiciona o clone à mochila do jogador
end

Implementar efeitos da ferramenta

Depois de adicionar ferramentas ao seu jogo, você pode implementar scripts para permitir que os jogadores usem suas ferramentas e realizem as ações desejadas. Os seguintes eventos específicos da ferramenta indicam o estado da ferramenta e a entrada do jogador com ela.

  • Equipped() — Dispara quando o jogador seleciona a ferramenta de sua mochila.
  • Unequipped() — Dispara quando o jogador troca de ferramentas ou solta a ferramenta.
  • Activated() — Dispara quando o jogador começa a ativar a ferramenta (clica, toca ou pressiona o gatilho traseiro direito em um controle).
  • Deactivated() — Dispara quando o jogador para a entrada de ativação (solta o botão ou toque).
Template de Eventos da Ferramenta
local tool = script.Parent
local function onEquip()
print(tool.Name, "ferramenta equipada")
end
local function onUnequip()
print(tool.Name, "ferramenta desequipada")
end
local function onActivate()
print(tool.Name, "ferramenta ativada")
end
local function onDeactivate()
print(tool.Name, "ferramenta desativada")
end
tool.Equipped:Connect(onEquip)
tool.Unequipped:Connect(onUnequip)
tool.Activated:Connect(onActivate)
tool.Deactivated:Connect(onDeactivate)

Os eventos da ferramenta só disparam em LocalScripts do lado do cliente, pois apenas o dispositivo do jogador sabe quando ocorre a entrada. Como resultado, a maioria das ferramentas requer tanto um LocalScript quanto um Script do lado do servidor, onde cada um lida com certos aspectos do comportamento da ferramenta e um RemoteEvent passa informações do cliente para o servidor (veja eventos remotos e callbacks para mais informações).

A seguir estão exemplos de ferramentas e seus comportamentos gerenciados por um LocalScript ou um Script:

FerramentaLocalScriptScript
Varinha do CriadorDetecta onde o jogador ativa a ferramenta (Activated()).Criando uma nova parte na localização dentro do mundo 3D onde o jogador tocou ou clicou.
Capa de InvisibilidadeDetecta quando o jogador equipa a ferramenta (Equipped()) ou desequipa a ferramenta (Unequipped()).Faz o jogador invisível para todos os outros jogadores enquanto a capa está equipada e restaura o jogador à visibilidade total quando a capa é desequipada.
Mega-ArcoDetecta quanto tempo o jogador ativa a ferramenta (tempo entre Activated() e Deactivated()).Lança uma flecha mágica com maior ou menor poder, dependendo do tempo de ativação detectado.
©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.