Con la classifica creata, i giocatori hanno bisogno di qualcosa da raccogliere. Per questo, devi creare un oggetto 3D per i giocatori da trovare nel Mondo. Questo è un video del processo di raccolta degli oggetti dei giocatori.
Costruisci un oggetto
Gli oggetti nell'esperienza sono modelli 3D che i giocatori utilizzano per raccogliere. Ogni Articolo, una volta raccolto, scompare e poi riappare dopo un periodo di tempo limitato.
Per l'Articolo, fai riferimento al tuo documento di progettazione di gioco. Questa serie usa cristalli come esempio.
Crea un oggetto, utilizzando parti o oggetti trovati dagli utenti con fiducia 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 .
Se si utilizzano parti proprie, 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.
Assicurati che tutte le parti siano ancorate .
Quindi gli elementi non possono essere raccolti mentre scompaiono, crea un valore di ricerca chiamato CanHarvest per tracciare il suo Stato.
Nelle proprietà per CanHarvest, controlla la Quadro di selezione Valore . Controllando la casella del valore, il pulsante vero rende il valore vero, il che significa che i giocatori possono raccogliere l'Articolo.
Creazione di 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 sono chiamati strumenti . Questa lezione usa uno strumento di avviamento con tutte le parti e un'animazione già fatta che puoi personalizzare in seguito.
Aggiungere lo strumento
Per i giocatori per usare lo strumento di avviamento, scaricarlo e posizionarlo nello StarterPack.
In Explorer, under Area di lavoro, right-click on StarterPack. Then, select Inserisci dal File .
Seleziona il file scaricato, starterTool.rbxm .
Prova il tuo progetto. I giocatori dovrebbero essere equipaggiati con lo strumento non appena Iniziare, cominciare. In gioco, premi 1 per equipaggiare o toglierti lo strumento. Fai clic con il pulsante sinistro per lanciarlo.
Codice lo strumento
Se lo strumento colpisce un oggetto da raccolta e il giocatore ha abbastanza spazio nella loro borsa, il numero di oggetti del Giocatoreaumenta di 1 nella Classifica. La raccolta di un oggetto lo fa sparire per pochi secondi e diventare non raccolto per pochi secondi prima di riapparire. Ciò incoraggia i giocatori a esplorare per trovare più oggetti, invece di fare clic sullo stesso Articolo.
Configurazione dello script
A questo punto, aggiungi uno script allo strumento. Questo script gestisce ciò che accade quando lo strumento tocca un oggetto da raccolta.
In StarterPack, sotto StarterTool, aggiungi uno script nuovo chiamato ToolScript.
Nel script, scrivi un commento descrittivo in alto, quindi crea variabili per memorizzare la parte dello strumento e lo strumento stesso.
-- Dà ai giocatori l'articolo quando toccano una parte raccoltalocal tool = script.Parentlocal toolPart = tool.Handle
Controllo degli elementi
Ogni volta che lo strumento tocca un oggetto, controlla se quell'oggetto ha CanHarvest all'interno e se il valore boolean è impostato su Vero.
Crea una nuova funzione chiamata onTouch() con un parametro chiamato partTouched .
local tool = script.Parentlocal toolPart = tool.Handlelocal function onTouch(partTouched)endIn quella funzione, crea una variabile locale chiamata canHarvest . Quindi, usa la funzione FindFirstChild() per vedere se c'è CanHarvest Boolean nel padre di quella parte.
local function onTouch(partTouched)local canHarvest = partTouched:FindFirstChild("CanHarvest")endOra lo script deve controllare se c'era effettivamente qualcosa trovato e, se sì, eseguire il codice. Per fare questo, crea una dichiarazione if in cui la condizione è canHarvest . Se qualcosa esiste in canHarvest, questa dichiarazione viene valutata come vero.
local function onTouch(partTouched)local canHarvest = partTouched:FindFirstChild("CanHarvest")if canHarvest thenendendNella dichiarazione if, aggiungi una dichiarazione di stampa per vedere se lo script sta funzionando. Puoi codificare la logica per il recupero degli elementi dopo averne certezza.
if canHarvest then-- Utilizzato per testare se il codice funzionaprint("Found an item")endSotto la dichiarazione di funzione end, aggiungi toolPart.Touched:Connect(onTouch) . Ciò consente al script di controllare se qualcosa tocca lo strumento (o in questo caso, la sua gestire) e, se sì, chiama onTouch() .
local function onTouch(partTouched)local canHarvest = partTouched:FindFirstChild("CanHarvest")if canHarvest thenprint("Found an item")endendtoolPart.Touched:Connect(onTouch)Gioca il progetto e usa lo strumento su un oggetto da raccolta (clicca con il pulsante sinistro del mouse per lanciare). Assicurati di vedere il messaggio "Hai trovato un Articolo" nella finestra di uscita.
Risolvere i problemi
Se non vedi il Messaggio, prova i seguenti suggerimenti.
- Se stai usando parti e maglie personalizzate, è possibile ottenere un errore. Lo script funziona solo se l'oggetto CanHarvest è un figlio dell'oggetto che lo strumento tocca.
- Assicurati che lo strumento sia nella StarterPack, non nell'area di Area di lavoro.
- Assicurarsi che il pezzo sia ancorato.
Ottenere le statistiche del giocatore
Prima di aumentare gli oggetti del Giocatore, lo strumento deve trovare la posizione di quanti oggetti un giocatore ha nella sua Classifica. Una volta che lo strumento ha accesso alla Classifica, può cambiare il numero di oggetti che un Giocatoreha.
Primo, ottieni il giocatore utilizzando lo strumento. Nel ToolScript, sotto local item = toolitem e sopra la funzione personalizzata, inserisci / scrivi:
local item = toolitemlocal backpack = tool.Parentlocal player = backpack.Parentlocal function onTouch(partTouched)Nella prossima riga, trova le statistiche leader del Giocatoreutilizzando la funzione FindFirstChild() .
local backpack = tool.Parentlocal player = backpack.Parentlocal playerStats = player:FindFirstChild("leaderstats")local function onTouch(partTouched)Sotto local playerStats, crea variabili per memorizzare le statistiche degli oggetti e degli spazi.
local playerStats = player:FindFirstChild("leaderstats")local playerItems = playerStats:FindFirstChild("Items")local playerSpaces = playerStats:FindFirstChild("Spaces")
Controllo per un oggetto da raccolta
Ora che lo script dello strumento ha le variabili playerItems e playerSpaces create, puoi iniziare a dare ai giocatori 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 loro borsa per aumentare gli oggetti mostrati sulla leaderboard di un oggetto.
Lo script avrà una if statement con due condizioni da soddisfare. Inizia creando una if statement, quindi aggiungi le seguenti condizioni, connesse con la parola chiave and .
- canHarvest.Value == true
- playerItems.Value < playerSpaces.Value
local function onTouch(partTouched)local canHarvest = partTouched.Parent:FindFirstChild("CanHarvest")if canHarvest thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenendendendNella dichiarazione if stessa, aggiungi agli oggetti del Giocatoredigitando playerItems.Value += 1 .
if canHarvest thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1endendGioca il tuo progetto; usa il tuo strumento per raccogliere un oggetto e controllare che il numero di oggetti sia aumentato.
Ripristinare l'elemento
Quando l'elemento è raccolto, si reimposterà in due modi:
- L'elemento scomparirà e non sarà interattabile
- CanHarvest impostato su false
L'elemento tornerà poi alla normalità dopo un breve periodo. In questo modo, i giocatori riceveranno solo un oggetto per ciascuna raccolta e dovranno guardare intorno per più tempo mentre l'元o resets.
Sotto dove gli oggetti vengono aggiunti, imposta canHarvest su false. Facendo in modo che il valore di canHarvest sia falso non appena i giocatori raccolgono l'Articolo, lo script non darà più di un oggetto per strumento colpito.
if canHarvest thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falseendendDopo aver impostato il valore su false, imposta la trasparenza della parte su 1 (invisibile) e CanCollide su false, il che significa che i giocatori non possono toccarlo.
if canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falsepartTouched.Transparency = 1partTouched.CanCollide = falseendDigitare task.wait(5) per dare il tempo per il Ripristinadell'elemento. 5 è un numero suggerito, e forse differisce per quanto tempo ti piacerebbe per la tua esperienza.
if canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falsepartTouched.Transparency = 1partTouched.CanCollide = falsetask.wait(5)endDopo la attesa, facci il contrario del codice precedente impostando il CanHarvest su true e reimpostando la trasparenza e il CanCollide ai loro valori originali.
task.wait(5)canHarvest.Value = truepartTouched.Transparency = 0partTouched.CanCollide = trueendGioca il progetto e Controllare /Verificare:
- Il giocatore ottiene solo 1 oggetto per raccogliere un Articolo.
- L'elemento sparisce e poi riappare dopo cinque secondi.
Risolvere i problemi
A questo punto, se uno dei controlli non passa prova uno dei seguenti sotto.
- Assicurati che Transparency e CanCollide siano scrisse e capitalizzate esattamente.
- Assicurati di utilizzare canHarvest.Value e non canHarvest = true.
Completa ToolScript
Una versione finita dello script può essere riferita 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
-- Resetta parzTouched, l'Articoloraccolto
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Riapparire l'elemento raccolto e renderlo nuovamente utilizzabile
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)