Ferramentas no jogo

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

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.

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

    Objeto ferramenta criado no workspace
  2. 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.
  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 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.

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

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:

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.

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á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
-- Re-ativa ferramentas no backpack na ordem especificada
for i = 1, #order do
local tool = ReplicatedStorage:FindFirstChild(order[i])
if tool then
tool.Parent = backpack
end
end

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 jogador

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local backpack = player:WaitForChild("Backpack")
-- Cria uma cópia da ferramenta
local tool = ReplicatedStorage:FindFirstChild("WaterSpell")
if tool then
local clone = tool:Clone()
clone.Parent = backpack -- Adiciona a cópia ao inventário do jogador
end

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:

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 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-ArcoDetecta 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.
©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.