As Tools no jogo são ferramentas interativas que os jogadores podem equipar nas 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 pelo mundo como itens coletáveis.
Crie uma ferramenta no jogo
O objeto Tool é a base de qualquer ferramenta no Roblox, então você precisará criar uma. É mais fácil visualizar como uma ferramenta aparece projetando-a no Workspace, e depois você pode torná-la um item de inventário ou um item ganho/comprado.
Com a nova Tool selecionada, acesse a janela de Properties e personalize como a ferramenta aparecerá no inventário do jogador:
- TextureId — Especifica o ID do ativo da imagem para a ferramenta no inventário de um jogador.
- ToolTip — O nome da ferramenta exibido como tooltip quando o mouse passa sobre ela no inventário de um jogador.

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 peças/máscaras para compor sua aparência no mundo 3D. Você também precisará incluir um cabo que os personagens jogadores seguram.
Adicionar partes/máscaras
As 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 outras restrições mecânicas para que a ferramenta permaneça intacta como uma unidade enquanto o jogador a transporta.

Defina o cabo
Para permitir que os jogadores carreguem ferramentas, uma parte da ferramenta precisa ser nomeada Handle. É aqui que a ferramenta se conectará à parte RightHand do modelo do personagem (R15) ou à parte Right Arm (R6).
Se a ferramenta for composta por apenas um MeshPart, simplesmente nomeie essa parte como Handle. Caso contrário, você pode incluir uma parte separada nomeada Handle como filha direta do Tool pai e, em seguida, aderir a outra parte com um WeldConstraint ou restrição mecânica.
O exemplo a seguir mostra uma ferramenta com três instâncias: a máscara Handle, uma RopeConstraint e uma máscara de lanterna pendurada na corda.

Ajustar a posição/orientação da pega
A propriedade Grip da ferramenta é um CFrame que especifica como a ferramenta é posicionada e orientada em relação ao personagem que a segura.

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


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.

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

Adicionar ferramentas a um jogo
Uma vez que você termine 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 no inventário, coloque-a dentro do contêiner StarterPack. Quando qualquer jogador aparecer, o sistema copia a ferramenta para seu Backpack. De lá, o jogador pode equipar a ferramenta clicando no ícone do 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 temporariamente move as ferramentas para ReplicatedStorage e depois as re-ativa no Backpack na ordem especificada na tabela order.
Reordenar Inventáriolocal ReplicatedStorage = game:GetService("ReplicatedStorage")local order = {"WaterSpell", "FireSpell", "AirSpell", "EarthSpell"}local backpack = script.Parentfor _, item in backpack:GetChildren() doif item:IsA("Tool") thenitem.Parent = ReplicatedStorageendend-- Re-ativa ferramentas no backpack na ordem especificadafor i = 1, #order dolocal tool = ReplicatedStorage:FindFirstChild(order[i])if tool thentool.Parent = backpackendend
Ferramenta coletá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. As 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 os personagens pegarem a ferramenta).
Como mencionado na seção adicionar partes/máscaras, as partes da ferramenta não devem ser tipicamente Anchored, já que os personagens jogadores ficarão presos no lugar quando pegarem ou equiparem uma ferramenta ancorada. No entanto, se você quiser ancorar uma ferramenta coletável em 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 quando 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 quando os jogadores completam tarefas ou oferecer ferramentas à venda em uma loja no jogo, coloque essas ferramentas dentro de ReplicatedStorage. A partir daí, você pode Clone() uma ferramenta para o Backpack do jogador no momento apropriado.

Clonar ferramenta para o inventário do jogadorlocal Players = game:GetService("Players")local ReplicatedStorage = game:GetService("ReplicatedStorage")local player = Players.LocalPlayerlocal backpack = player:WaitForChild("Backpack")-- Cria uma cópia da ferramentalocal tool = ReplicatedStorage:FindFirstChild("WaterSpell")if tool thenlocal clone = tool:Clone()clone.Parent = backpack -- Adiciona a cópia ao inventário do jogadorend
Implementar efeitos de ferramentas
Após 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() — É acionado quando o jogador seleciona a ferramenta de seu backpack.
- Unequipped() — É acionado quando o jogador muda de ferramenta ou solta a ferramenta.
- Activated() — É acionado quando o jogador começa a ativar a ferramenta (clica, toca ou pressiona o gatilho traseiro direito em um controle).
- Deactivated() — É acionado quando o jogador para a entrada de ativação (solta o botão ou toque).
Template de Eventos de 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 de ferramentas são acionados apenas em LocalScripts do lado do cliente, porque apenas o dispositivo do jogador sabe quando ocorre 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 (consulte 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:
| Ferramenta | LocalScript | Script |
|---|---|---|
| Varinha do Criador | Detecta 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 Invisibilidade | Detecta quando o jogador equipa a ferramenta (Equipped()) ou desequipa a ferramenta (Unequipped()). | Faz com que o jogador fique invisível para todos os outros jogadores enquanto a capa estiver equipada e restaura a visibilidade total do jogador quando a capa é desequipada. |
| Mega-Arco | Detecta quanto tempo o jogador ativa a ferramenta (tempo entre Activated() e Deactivated()). | Lança uma flecha mágica com mais ou menos poder, dependendo do tempo de ativação detectado. |
