Strumenti in gioco

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Gli Tools in gioco sono strumenti interattivi che i giocatori possono equipaggiare durante le sessioni, come armi, bacchette magiche, torce, chiavi e altro ancora. Puoi progettare strumenti e includerli nell'inventario di un giocatore o posizionarli nel mondo come oggetti da raccogliere.

Crea uno strumento in gioco

L'oggetto Tool è la base di qualsiasi strumento in Roblox, quindi dovrai crearne uno. È più semplice visualizzare come appare uno strumento progettandolo in Workspace, e in seguito puoi farne un elemento dell'inventario oppure un oggetto guadagnato/acquistato.

  1. Nell'albero Explorer, passa il mouse sopra Workspace, clicca il pulsante e inserisci un Tool.

    Oggetto strumento creato nello spazio di lavoro
  2. Con il nuovo Tool selezionato, accedi alla finestra Proprietà e personalizza come apparirà lo strumento nell'inventario del giocatore:

    • TextureId — Specifica l'ID dell'immagine dell'asset per lo strumento nell'inventario di un giocatore.
    • ToolTip — Il nome del tooltip al passaggio del mouse per lo strumento nell'inventario di un giocatore.
  3. Decidi se lo strumento sarà un strumento fisico nell'ambiente 3D (la scelta più comune) o uno strumento non fisico che occupa semplicemente l'inventario di un giocatore e risponde ai loro input.

Strumento fisico

Dopo aver creato l'istanza Tool per uno strumento fisico, dovrai aggiungere parti/mesh per comporre il suo aspetto nel mondo 3D. Dovrai anche includere una maniglia che i personaggi dei giocatori afferrano.

Aggiungi parti/mesh

Gli strumenti in gioco possono consistere in una o più Parts e/o MeshParts. Se costruisci lo strumento di più pezzi, ricorda di collegarli tutti insieme utilizzando WeldConstraints o altri vincoli meccanici in modo che lo strumento rimanga intatto come un'unità mentre il giocatore lo porta in giro.

Selettori di vincoli indicati nella barra degli strumenti di Studio

Imposta la maniglia

Per consentire ai giocatori di portare gli strumenti in giro, una parte dello strumento deve essere chiamata Handle. Qui è dove lo strumento si attaccherà alla parte RightHand del modello del personaggio (R15) o alla parte Right Arm (R6).

Se lo strumento è composto da un'unica MeshPart, basta chiamare quella parte Handle. Altrimenti, puoi includere una parte separata chiamata Handle come figlio diretto del genitore Tool e poi collegarla a un'altra parte con un WeldConstraint o vincolo meccanico.

Il seguente esempio mostra uno strumento con tre istanze: la mesh Handle, un RopeConstraint e una mesh di una lanterna che pende dalla corda.

Regola la posizione/orientamento della presa

La proprietà Grip dello strumento è un CFrame che specifica come lo strumento è posizionato e orientato rispetto al personaggio che lo tiene.

Poiché la posizione/orientamento ideale della presa è diversa per ogni strumento, dovrai sperimentare con i valori fino a quando la presa del tuo strumento non appare corretta. Il seguente esempio mostra impostazioni Grip possibili errate e corrette per la lanterna appesa:

Lanterna che trascina sul terreno con Grip.Position di (0, -2, 0) e Grip.Orientation di (-90, 0, 0)
Lanterna davanti al personaggio con Grip.Position di (0, -1.5, 0) e Grip.Orientation di (25, 0, 0)

Strumento non fisico

Uno strumento Tool non fisico occupa semplicemente l'inventario di un giocatore e risponde al loro input. Ad esempio, un gioco di ruolo potrebbe presentare una serie di incantesimi magici che i giocatori possono "lanciare" tramite il loro inventario.

Gli strumenti non fisici non richiedono alcuna composizione 3D e non utilizzano una parte Handle, quindi dovresti disattivare la proprietà RequiresHandle dello strumento:

Aggiungi strumenti a un gioco

Una volta che hai finito di creare il tuo strumento in gioco, dovrai posizionarlo nell'area corretta dell'albero Explorer. Dove posizioni lo strumento nell'albero dipende dal suo uso previsto.

Inventario del giocatore

Se vuoi che tutti i giocatori inizino con uno strumento nel loro inventario, mettilo dentro il contenitore StarterPack. Quando un qualsiasi giocatore viene generato, il sistema copia lo strumento nel loro Backpack. Da lì, il giocatore può equipaggiare lo strumento cliccando sulla sua icona nell'inventario o premendo il tasto di scelta rapida associato, come 1 o 2.

Nota che gli strumenti vengono copiati nell'inventario del giocatore (Backpack) nell'ordine in cui sono stati aggiunti a StarterPack. Per un ordinamento più controllato, puoi aggiungere uno LocalScript a StarterPack che sposta temporaneamente gli strumenti in ReplicatedStorage e poi li riposiziona in Backpack nell'ordine specificato nella tabella order.

Riordina l'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
-- Ripristina strumenti nello zaino nell'ordine specificato
for i = 1, #order do
local tool = ReplicatedStorage:FindFirstChild(order[i])
if tool then
tool.Parent = backpack
end
end

Strumento collezionabile

Se desideri consentire ai giocatori di raccogliere strumenti fisici mentre esplorano il mondo 3D, posiziona gli strumenti in Workspace proprio come oggetti 3D normali. Gli strumenti raccolti verranno automaticamente equipaggiati e aggiunti all'inventario del giocatore (non è necessario aggiungere ulteriori rilevamenti delle collisioni affinché i personaggi afferrino lo strumento).

Come accennato nella sezione aggiungi parti/mesh, le parti degli strumenti non dovrebbero essere tipicamente Anchored, poiché i personaggi dei giocatori rimarranno bloccati in posizione quando raccoglieranno o equipaggeranno uno strumento ancorato. Tuttavia, se desideri ancorare uno strumento collezionabile in un luogo specifico nel mondo 3D, come fluttuare leggermente sopra il terreno, puoi aggiungere il seguente Script allo strumento per disancorare le sue parti al momento della raccolta.

Disancora lo strumento all'equipaggiamento/raccolta

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)

Strumento guadagnato/acquistato

Se desideri impostare strumenti come premi quando i giocatori completano compiti, o offrire strumenti in vendita in un negozio in gioco, metti quegli strumenti dentro ReplicatedStorage. Da lì, puoi Clone() uno strumento nell'Backpack del giocatore al momento giusto.

Clona lo strumento nell'inventario del giocatore

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local backpack = player:WaitForChild("Backpack")
-- Crea un clone dello strumento
local tool = ReplicatedStorage:FindFirstChild("WaterSpell")
if tool then
local clone = tool:Clone()
clone.Parent = backpack -- Aggiunge il clone allo zaino del giocatore
end

Implementa gli effetti degli strumenti

Dopo aver aggiunto strumenti al tuo gioco, puoi implementare script per consentire ai giocatori di utilizzare i loro strumenti e compiere le azioni desiderate. I seguenti eventi specifici degli strumenti indicano lo stato dello strumento e l'input del giocatore con esso.

  • Equipped() — Si attiva quando il giocatore seleziona lo strumento dal proprio zaino.
  • Unequipped() — Si attiva quando il giocatore cambia strumenti o abbandona lo strumento.
  • Activated() — Si attiva quando il giocatore inizia ad attivare lo strumento (clicca, tocca o preme il grilletto posteriore destro su un controller).
  • Deactivated() — Si attiva quando il giocatore interrompe l'input di attivazione (rilascia il bottone o il tocco).
Template per eventi dello strumento

local tool = script.Parent
local function onEquip()
print(tool.Name, "strumento equipaggiato")
end
local function onUnequip()
print(tool.Name, "strumento disarmato")
end
local function onActivate()
print(tool.Name, "strumento attivato")
end
local function onDeactivate()
print(tool.Name, "strumento disattivato")
end
tool.Equipped:Connect(onEquip)
tool.Unequipped:Connect(onUnequip)
tool.Activated:Connect(onActivate)
tool.Deactivated:Connect(onDeactivate)

Gli eventi dello strumento si attivano solo negli LocalScripts sul lato client, poiché solo il dispositivo del giocatore sa quando si verifica un input. Di conseguenza, la maggior parte degli strumenti richiede sia uno LocalScript che uno Script sul lato server, in cui ciascuno gestisce determinati aspetti del comportamento dello strumento e un RemoteEvent passa informazioni dal client al server (vedi eventi remoti e callback per ulteriori informazioni).

Di seguito sono riportati esempi di strumenti e i loro comportamenti gestiti da uno LocalScript o uno Script:

StrumentoLocalScriptScript
Bacchetta del CreatoreRileva dove il giocatore attiva lo strumento (Activated()).Crea una nuova parte nella posizione del mondo 3D dove il giocatore ha toccato o cliccato.
Mantello dell'InvisibilitàRileva quando il giocatore equipaggia lo strumento (Equipped()) o dissimula lo strumento (Unequipped()).Rende il giocatore invisibile a tutti gli altri giocatori mentre il mantello è equipaggiato e ripristina la piena visibilità del giocatore quando il mantello è dissimulato.
Super ArcoRileva quanto a lungo il giocatore attiva lo strumento (tempo tra Activated() e Deactivated()).Scocca una freccia magica con potere maggiore o minore, a seconda del tempo di attivazione rilevato.
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.