Herramientas en el juego

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Las Tools en el juego son herramientas interactivas que los jugadores pueden equipar en las sesiones, como armas, varitas mágicas, linternas, llaves y más. Puedes diseñar herramientas e incluirlas en el inventario de un jugador o colocarlas alrededor del mundo como objetos recogibles.

Crear una herramienta en el juego

El objeto Tool es la base de cualquier herramienta en Roblox, así que necesitarás crear uno. Es más fácil previsualizar cómo se ve una herramienta diseñándola en el Workspace, y más tarde puedes convertirla en un elemento de inventario o un elemento ganado/comprado.

  1. En la jerarquía del Explorer, pasa el cursor sobre Workspace, haz clic en el botón e inserta un Tool.

    Objeto herramienta creado en el espacio de trabajo
  2. Con el nuevo Tool seleccionado, accede a la ventana de Propiedades y personaliza cómo aparecerá la herramienta en el inventario del jugador:

    • TextureId — Especifica el ID del activo de imagen para la herramienta en el inventario de un jugador.
    • ToolTip — El nombre del tooltip al pasar el cursor sobre la herramienta en el inventario de un jugador.
  3. Decide si la herramienta será una herramienta física en el entorno 3D (lo más común) o una herramienta no física que simplemente ocupa el inventario de un jugador y responde a su entrada.

Herramienta física

Después de crear la instancia de Tool para una herramienta física, necesitarás agregar partes/mallas para componer su apariencia en el mundo 3D. También necesitarás incluir un mango que los personajes jugadores agarren.

Agregar partes/mallas

Las herramientas en el juego pueden consistir en una o más Parts y/o MeshParts. Si construyes la herramienta de múltiples piezas, recuerda conectarlas todas usando WeldConstraints u otras restricciones mecánicas para que la herramienta se mantenga intacta como una unidad mientras el jugador la lleva.

Selector de restricciones indicado en la barra de herramientas de Studio

Establecer el mango

Para permitir que los jugadores lleven herramientas, una parte de la herramienta debe llamarse Handle. Aquí es donde la herramienta se unirá a la parte del modelo del personaje RightHand cuerpo (R15) o parte Right Arm (R6).

Si la herramienta está compuesta por solo una MeshPart, simplemente nombra esa parte Handle. De lo contrario, puedes incluir una parte separada llamada Handle como un hijo directo del Tool padre y luego unirla a otra parte con un WeldConstraint o restricción mecánica.

El siguiente ejemplo muestra una herramienta con tres instancias: la malla Handle, un RopeConstraint y una malla de linterna que cuelga de la cuerda.

Ajustar la posición/orientación del agarre

La propiedad Grip de la herramienta es un CFrame que especifica cómo está posicionada y orientada la herramienta en relación con el personaje que la sostiene.

Dado que la posición/orientación de agarre ideal es diferente para cada herramienta, necesitarás experimentar con los valores hasta que el agarre de tu herramienta se vea correcto. El siguiente ejemplo muestra configuraciones de Grip incorrectas y correctas para la linterna colgante:

Linterna arrastrándose por el suelo con Grip.Position de (0, -2, 0) y Grip.Orientation de (-90, 0, 0)
Linterna frente al personaje con Grip.Position de (0, -1.5, 0) y Grip.Orientation de (25, 0, 0)

Herramienta no física

Una Tool no física simplemente ocupa el inventario de un jugador y responde a su entrada. Por ejemplo, un juego de rol podría presentar una serie de hechizos mágicos que los jugadores pueden "lanzar" a través de su inventario.

Las herramientas no físicas no requieren ninguna composición 3D y no utilizan una parte Handle, así que debes desactivar la propiedad RequiresHandle de la herramienta:

Agregar herramientas a un juego

Una vez que termines de crear tu herramienta en el juego, necesitarás colocarla en el área correcta de la jerarquía del Explorer. Dónde coloques la herramienta en la jerarquía depende de su uso previsto.

Inventario del jugador

Si deseas que todos los jugadores comiencen con una herramienta en su inventario, colócala dentro del contenedor StarterPack. Cuando cualquier jugador aparezca, el sistema copia la herramienta a su Backpack. Desde allí, el jugador puede equipar la herramienta haciendo clic en su ícono de inventario o presionando la tecla de acceso rápido asociada, como 1 o 2.

Ten en cuenta que las herramientas se copian al inventario del jugador (Backpack) en el orden en que se agregaron a StarterPack. Para un orden más controlado, puedes agregar un LocalScript a StarterPack que mueva temporalmente las herramientas a ReplicatedStorage y luego las reparenta a Backpack en el orden especificado en la tabla order.

Reordenar Inventario
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-parentar herramientas al backpack en el orden especificado
for i = 1, #order do
local tool = ReplicatedStorage:FindFirstChild(order[i])
if tool then
tool.Parent = backpack
end
end

Herramienta coleccionable

Si deseas permitir que los jugadores recojan herramientas físicas mientras exploran el mundo 3D, coloca las herramientas en el Workspace como objetos 3D normales. Las herramientas recogidas se equiparán automáticamente y se agregarán al inventario del jugador (no necesitas agregar detección de colisiones adicional para que los personajes agarren la herramienta).

Como se mencionó en la sección agregar partes/mallas, las partes de la herramienta no deben estar típicamente Anchored, ya que los personajes jugadores quedarán atascados en su lugar cuando recojan o equipen una herramienta anclada. Sin embargo, si deseas anclar una herramienta coleccionable en un lugar específico del mundo 3D, como flotando ligeramente sobre el suelo, puedes agregar el siguiente Script a la herramienta para desanclar sus partes al ser recogidas.

Desanclar Herramienta al Equipar/Recoger
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)

Herramienta ganada/comprada

Si deseas establecer herramientas como premios por cuando los jugadores logran tareas, o ofrecer herramientas a la venta en una tienda dentro del juego, coloca esas herramientas dentro de ReplicatedStorage. Desde allí, puedes Clone() una herramienta al Backpack del jugador en el momento adecuado.

Clonar Herramienta al Inventario del Jugador
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local backpack = player:WaitForChild("Backpack")
-- Crear un clon de la herramienta
local tool = ReplicatedStorage:FindFirstChild("WaterSpell")
if tool then
local clone = tool:Clone()
clone.Parent = backpack -- Agrega el clon al backpack del jugador
end

Implementar efectos de herramientas

Después de agregar herramientas a tu juego, puedes implementar scripts para permitir que los jugadores usen sus herramientas y realicen las acciones deseadas. Los siguientes eventos específicos de la herramienta indican el estado de la herramienta y la entrada del jugador con ella.

  • Equipped() — Se activa cuando el jugador selecciona la herramienta de su mochila.
  • Unequipped() — Se activa cuando el jugador cambia de herramienta o deja caer la herramienta.
  • Activated() — Se activa cuando el jugador comienza a activar la herramienta (hace clic, toca o presiona el gatillo trasero derecho en un gamepad).
  • Deactivated() — Se activa cuando el jugador detiene la entrada de activación (suelta el botón o el toque).
Plantilla de Eventos de Herramienta
local tool = script.Parent
local function onEquip()
print(tool.Name, "herramienta equipada")
end
local function onUnequip()
print(tool.Name, "herramienta desequipada")
end
local function onActivate()
print(tool.Name, "herramienta activada")
end
local function onDeactivate()
print(tool.Name, "herramienta desactivada")
end
tool.Equipped:Connect(onEquip)
tool.Unequipped:Connect(onUnequip)
tool.Activated:Connect(onActivate)
tool.Deactivated:Connect(onDeactivate)

Los eventos de herramientas solo se activan en LocalScripts del lado del cliente porque solo el dispositivo del jugador sabe cuándo ocurre la entrada. Como resultado, la mayoría de las herramientas requieren tanto un LocalScript como un Script del lado del servidor, donde cada uno maneja ciertos aspectos del comportamiento de la herramienta y un RemoteEvent pasa información del cliente al servidor (consulta eventos remotos y callbacks para más información).

A continuación se presentan ejemplos de herramientas y sus comportamientos gestionados por un LocalScript o un Script:

HerramientaLocalScriptScript
Varita del CreadorDetecta dónde el jugador activa la herramienta (Activated()).Crea una nueva parte en la ubicación dentro del mundo 3D donde el jugador tocó o hizo clic.
Capa de InvisibilidadDetecta cuándo el jugador equipa la herramienta (Equipped()) o desequipa la herramienta (Unequipped()).Hace que el jugador sea invisible para todos los demás jugadores mientras la capa está equipada y restaura al jugador a plena visibilidad cuando la capa es desequipada.
Mega-ArcoDetecta cuánto tiempo el jugador activa la herramienta (tiempo entre Activated() y Deactivated()).Lanza una flecha mágica con mayor o menor poder, dependiendo del tiempo de activación detectado.
©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.