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 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 por el mundo como objetos recogibles.

Crear una herramienta en el juego

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

  1. En la jerarquía del Explorador, coloca el ratón sobre Workspace, haz clic en el botón e inserta un Tool.

    Objeto herramienta creado en el espacio de trabajo
  2. Con la nueva Tool seleccionada, accede a la ventana de Propiedades y personaliza cómo se verá 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 ratón 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 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 entre sí usando WeldConstraints u otras restricciones mecánicas para que la herramienta se mantenga intacta como una unidad mientras el jugador la transporta.

Selector de restricciones indicado en la barra de herramientas de Studio

Establecer el mango

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

Si la herramienta está compuesta por una sola MeshPart, simplemente nombra esa parte Handle. De lo contrario, puedes incluir una parte separada llamada Handle como un hijo directo de la herramienta Tool y luego adjuntarla 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 incluir 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, por lo 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 Explorador. Dónde coloques la herramienta en la jerarquía depende de su uso previsto.

Inventario del jugador

Si quieres 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 icono en el 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 fueron añadidas a StarterPack. Para un orden más controlado, puedes agregar un LocalScript a StarterPack que temporalmente mueva las herramientas a ReplicatedStorage y luego las re-parenta 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 añadirán al inventario del jugador (no es necesario 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 se quedarán atascados en su lugar al recoger o equipar 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 recogida.

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 recompensas por cuando los jugadores logran tareas, o ofrecer herramientas a la venta en una tienda en el 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 -- Añade el clon al backpack del jugador
end

Implementar efectos de herramienta

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 herramientas indican el estado de la herramienta y la entrada del jugador con ella.

  • Equipped() — Se dispara cuando el jugador selecciona la herramienta de su backpack.
  • Unequipped() — Se dispara cuando el jugador cambia de herramientas o deja caer la herramienta.
  • Activated() — Se dispara cuando el jugador comienza a activar la herramienta (hace clic, toca o presiona el botón de disparo trasero derecho en un control).
  • Deactivated() — Se dispara cuando el jugador detiene la entrada de activación (suelta el botón o 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 no equipada")
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 herramienta 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 desde el cliente al servidor (consulta eventos remotos y callbacks para más información).

A continuación se presentan herramientas de ejemplo 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 la desenquita (Unequipped()).Hace que el jugador sea invisible para todos los demás jugadores mientras la capa esté equipada y restaura al jugador a la visibilidad total cuando la capa se desenquita.
Mega-ArcoDetecta cuánto tiempo activa el jugador 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.