Raccogli oggetti

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

Con la classifica creata, i giocatori hanno bisogno di qualcosa da raccogliere.Per farlo, devi creare un oggetto 3D per i giocatori da trovare nel Mondo.Di seguito è un video del processo di raccolta degli oggetti da parte dei giocatori.

Costruisci un Articolo

Gli elementi nell'esperienza sono modelli 3D che i giocatori utilizzano uno strumento per raccogliere.Ogni Articolo, una volta raccolto, scompare e poi riappare dopo un tempo limitato.

Per l'Articolo, fai riferimento al tuo documento di progettazione del gioco. Questa serie usa i cristalli come esempio.

  1. Crea un oggetto, utilizzando parti o oggetti trovati da utenti affidabili nel Marketplace.

    Se lo desideri, scarica la parte di cristallo con questo link . Per aggiungerlo, fai clic con il pulsante destro del mouse sull'area di lavoro e seleziona Inserisci dal file .

  2. Se utilizzi la tua parte, raggruppa tutte le parti in un modello .Un modo per farlo è selezionare tutti gli elementi, fare clic con il pulsante destro del mouse su una parte e selezionare Gruppo .Questo crea un modello che organizza le tue parti.

  3. Assicurati che le parti siano tutte ancorate .

  4. Quindi gli elementi non possono essere raccolti mentre scompaiono, crea un BoolValue chiamato CanHarvest per tracciare il suo Stato.

  5. Nelle proprietà per CanHarvest, controlla la Quadro di selezione Valore . Controllare la casella di valore rende il boolean true, il che significa che i giocatori possono raccogliere l'Articolo.

Crea uno strumento

I giocatori hanno bisogno di qualcosa come un ascia o una pala per raccogliere oggetti con.In Roblox, gli oggetti che i giocatori possono equipaggiare e utilizzare si chiamano strumenti .Questa lezione utilizza uno strumento di avviamento con tutte le parti e un'animazione già realizzata che puoi personalizzare in seguito.

Aggiungi lo strumento

Per i giocatori utilizzare lo strumento di avviamento, scaricarlo e posizionarlo nel StarterPack.

  1. Scarica lo strumento di avvio qui sotto.

  2. In Explorer, sotto Area di lavoro, fai clic con il pulsante destro su StarterPack. Quindi seleziona Inserisci da file .

  3. Seleziona il file scaricato, starterTool.rbxm .

  4. Prova il tuo progetto.I giocatori dovrebbero essere equipaggiati con lo strumento non appena Iniziare, cominciare.In gioco, premi 1 per equipaggiare o mettere via lo strumento.Fai clic sinistro per oscillarlo.

Codifica lo strumento

Se lo strumento colpisce un oggetto raccoltabile e il giocatore ha abbastanza spazio nella sua borsa, il conteggio degli oggetti del Giocatoreaumenta di 1 nella Classifica.Raccogliere un oggetto lo fa scomparire per qualche secondo e diventa non raccoltabile per qualche secondo prima di riapparire.Ciò incoraggia i giocatori a esplorare per trovare più oggetti, invece di fare clic sullo stesso Articolo.

Configurare lo script

A questo punto, aggiungi uno script allo strumento. Questo script gestisce ciò che accade quando lo strumento tocca un oggetto raccoltabile.

  1. In StarterPack, sotto StarterTool, aggiungi un nuovo script chiamato ToolScript.

  2. Nell' script, scrivi un commento descrittivo in alto, quindi crea le variabili per archiviare la parte dello strumento e lo strumento stesso.


    -- Dà agli giocatori un oggetto quando toccano una parte raccoltabile
    local tool = script.Parent
    local toolPart = tool.Handle

Controlla gli oggetti

Ogni volta che lo strumento tocca un oggetto, controlla se quell'oggetto ha CanHarvest all'interno e se il boolean è impostato su True.

  1. Crea una nuova funzione chiamata onTouch() con un parametro chiamato partTouched .


    local tool = script.Parent
    local toolPart = tool.Handle
    local function onTouch(partTouched)
    end
  2. In quella funzione, crea una variabile locale chiamata canHarvest .Quindi, usa la funzione FindFirstChild() per vedere se c'è il CanHarvest boolean nel padre di quella parte.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    end
  3. Ora lo script deve controllare se è stato trovato effettivamente qualcosa e, in caso affermativo, eseguire il codice.Per fare ciò, crea una dichiarazione if in cui la condizione è canHarvest .Se esiste qualcosa in canHarvest , questa dichiarazione si valuta come vera.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    end
    end
  4. Nella dichiarazione if, aggiungi una dichiarazione di stampa per vedere se lo script funziona. Puoi codificare la logica per il raccolto degli elementi dopo aver fatto sicurezza che funziona.


    if canHarvest then
    -- Utilizzato per testare se il codice funziona
    print("Found an item")
    end
  5. Sotto la dichiarazione della funzione end, aggiungi toolPart.Touched:Connect(onTouch).Questo consente allo script di controllare se qualcosa sta toccando lo strumento (o in questo caso, la sua gestire) e, se è così, chiama onTouch() .


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    print("Found an item")
    end
    end
    toolPart.Touched:Connect(onTouch)
  6. Gioca al progetto e usa lo strumento su un oggetto raccoltabile (clicca a sinistra per oscillare). Assicurati di vedere il messaggio "Trovato un Articolo" nella finestra di output.

Suggerimenti per la risoluzione dei problemi

Se non vedi il Messaggio, prova i seguenti suggerimenti.

  • Se stai usando parti e mesh personalizzate, è possibile ottenere un errore.Lo script funziona solo se l'oggetto CanHarvest è un figlio della parte che lo strumento sta toccando.
  • Assicurati che lo strumento sia nel StarterPack, non nell'area di Area di lavoro.
  • Controlla che la parte sia ancorata.

Ottieni statistiche giocatore

Prima di aumentare gli oggetti del Giocatore, lo strumento deve trovare la posizione di quanti oggetti un giocatore ha nella Classificadi quel Giocatore.Una volta che lo strumento ha accesso alla Classifica, può cambiare il numero di oggetti di quel Giocatore.

  1. Prima, ottieni il giocatore utilizzando lo strumento. Nel ToolScript, sotto local item = toolitem , e sopra la funzione personalizzata, inserisci / scrivi:


    local item = toolitem
    local backpack = tool.Parent
    local player = backpack.Parent
    local function onTouch(partTouched)
  2. Nella prossima riga, trova le statistiche del leader del Giocatoreutilizzando la funzione FindFirstChild().


    local backpack = tool.Parent
    local player = backpack.Parent
    local playerStats = player:FindFirstChild("leaderstats")
    local function onTouch(partTouched)
  3. Sotto local playerStats, crea le variabili per archiviare le statistiche sugli oggetti e sugli spazi.


    local playerStats = player:FindFirstChild("leaderstats")
    local playerItems = playerStats:FindFirstChild("Items")
    local playerSpaces = playerStats:FindFirstChild("Spaces")

Controlla per un oggetto raccoltabile

Ora che lo script dello strumento ha le variabili playerItems e playerSpaces create, puoi iniziare a dare agli utenti un Articolo.Usa la funzione creata per controllare se l'oggetto che tocca lo strumento può essere raccolto e se il giocatore ha abbastanza spazio nella sua borsa per aumentare gli oggetti mostrati nella classifica di uno.

  1. Lo script avrà bisogno di una dichiarazione if con due condizioni da soddisfare.Inizia creando una dichiarazione if, quindi aggiungi le seguenti condizioni, connessi con la parola chiave and.

    • canHarvest.Value == true
    • playerItems.Value < playerSpaces.Value

    local function onTouch(partTouched)
    local canHarvest = partTouched.Parent:FindFirstChild("CanHarvest")
    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    end
    end
    end
  2. Nella dichiarazione if stessa, aggiungi agli elementi del Giocatoredigitando playerItems.Value += 1 .


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    end
    end
  3. Gioca al tuo progetto; usa lo strumento per raccogliere un oggetto e controlla che il conteggio degli oggetti sia aumentato.

Ripristina l'Articolo

Quando l'elemento viene raccolto, si ripristinerà in due modi:

  • L'elemento scomparirà e non sarà interattabile
  • CanHarvest impostato su false

L'elemento tornerà quindi alla normalità dopo un breve periodo di tempo.In questo modo, i giocatori ottengono solo un oggetto per ogni raccolta e devono cercare altro mentre si ripristina l'originale.

  1. Sotto dove gli elementi vengono aggiunti, imposta canHarvest a falso.Rendendo il valore di canHarvest falso non appena i giocatori raccolgono l'Articolo, lo script non darà più di un oggetto per ogni colpo di strumento.


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    end
    end
  2. Dopo aver impostato il valore su false, imposta la trasparenza della parte su 1 (invisibile) e CanCollide su false, cioè i giocatori non possono toccarla.


    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    end
  3. Digita task.wait(5) per dare tempo all'elemento per essere Ripristina. 5 è un numero suggerito e potrebbe essere diverso per quanto tempo vorresti per la tua esperienza.


    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    task.wait(5)
    end
  4. Dopo l'attesa, fai l'opposto del codice precedente, impostando il CanHarvest a vero e ripristinando la trasparenza e CanCollide ai loro valori originali.


    task.wait(5)
    canHarvest.Value = true
    partTouched.Transparency = 0
    partTouched.CanCollide = true
    end
  5. Gioca al progetto e Controllare /Verificare:

    • Il giocatore ottiene solo 1 oggetto per la raccolta di un Articolo.
    • L'elemento scompare e poi riappare dopo cinque secondi.

Suggerimenti per la risoluzione dei problemi

A questo punto, se uno dei controlli non è passato, prova uno dei seguenti.

  • Verifica che Trasparenza e CanCollide sono spellati e capitalizzati esattamente.
  • Assicurati di utilizzare canHarvest.Value e non canHarvest = true.

Completa il ToolScript

Una versione finale dello script può essere citata qui sotto.


local toolPart = script.Parent
local tool = toolPart.Parent
local backpack = tool.Parent
local player = backpack.Parent
local playerStats = player:FindFirstChild("leaderstats")
local playerItems = playerStats:FindFirstChild("Items")
local playerSpaces = playerStats:FindFirstChild("Spaces")
local function onTouch(partTouched)
local canHarvest = partTouched:FindFirstChild("CanHarvest")
if canHarvest then
if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
playerItems.Value += 1
canHarvest.Value = false
-- Ripristina partTouched, l'Articoloraccolto
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Fai riapparire l'elemento raccolto e riutilizzabile
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)