Mit der erstellten Rangliste müssen Spieler etwas sammeln.Dafür musst du ein 3D-Item erstellen, das Spieler in der Welt finden können.Im Folgenden ist ein Video des Prozesses der Ernte von Gegenständen durch Spieler.
Baue ein Artikelauf
Artikel im Erlebnis sind 3D-Modelle, die Spieler mit einem Werkzeug ernten.Jedes Element verschwindet, sobald es einmal geerntet wurde, und taucht dann nach einer begrenzten Zeit wieder auf.
Für das Artikelbeziehe dich auf dein Spieldesigndokument zurück. Diese Serie verwendet Kristalle als Beispiel.
Erstelle ein Objekt, entweder mit Teilen oder Objekten, die von vertrauenswürdigen Benutzern auf dem Marktplatz gefunden wurden.
Wenn gewünscht, laden Sie das Kristallteil mit diesem Link herunter. Um es hinzuzufügen, klicken Sie mit der rechten Maustaste auf den Arbeitsbereich und wählen Sie Aus der Datei einfügen .
Wenn du dein eigenes Teil verwendest, gruppiere alle Teile in ein Modell .Eine Möglichkeit, dies zu tun, besteht darin, alle Elemente auszuwählen, auf ein Teil mit der rechten Maustaste zu klicken und Gruppe auszuwählen.Dies erstellt ein Modell, das deine Teile organisiert.
Stellen Sie sicher, dass alle Teile verankert sind.
Daher können Artikel nicht geerntet werden, während sie verschwinden, erstelle einen BoolValue mit dem Namen CanHarvest, um seinen Status zu verfolgen.
In Eigenschaften für CanHarvest überprüfen Sie die Auswahlbox. Das Überprüfen der Wertbox macht den booleschen Wert wahr, was bedeutet, dass Spieler den Artikel ernten können.
Erstelle ein Tool
Spieler brauchen etwas wie eine Axt oder eine Schaufel, um mit Gegenständen zu sammeln.In Roblox werden Gegenstände, die Spieler ausrüsten und verwenden können, Werkzeuge genannt.Diese Lektion verwendet ein Starter-Tool mit allen Teilen und einer Animation, die bereits erstellt wurde, die du später anpassen kannst.

Füge das Toolhinzu
Für Spieler, um das Starter-Tool zu verwenden, herunterladen und in das Starter-Paket platzieren.
In Explorer, unter Arbeitsbereich, klicken Sie mit der rechten Maustaste auf StarterPack. Dann wählen Sie Aus der Datei einfügen .
Wählen Sie die heruntergeladene Datei, starterTool.rbxm.
Teste dein Projekt.Spieler sollten mit dem Werkzeug ausgerüstet werden, sobald sie starten.Im Spiel drücken Sie 1, um das Toolauszurüsten oder wegzulegen.Klicke mit der linken Maustaste, um es zu schwingen.
Code das Tool
Wenn das Werkzeug ein erntbares Objekt trifft und der Spieler genügend Platz in seiner Tasche hat, steigt die Anzahl der Artikel des Spieler:inum 1 in der Bestenliste.Das Ernten eines Elements lässt es für ein paar Sekunden verschwinden und wird für ein paar Sekunden unerntbar, bevor es wieder erscheint.Dies ermutigt Spieler, zu erkunden, um mehr Gegenstände zu finden, anstatt nur auf dasselbe Element zu klicken.
Konfiguriere das Skript, das. PL: die Skripts
Füge zu diesem Zeitpunkt ein Skript zum Toolhinzu. Dieses Skript behandelt, was passiert, wenn das Werkzeug ein erntbares Objekt berührt.
In StarterPack, unter StarterTool, füge ein neues Skript namens ToolScript hinzu.
Im Skript, das. PL: die Skriptsschreiben Sie einen beschreibenden Kommentar oben und erstellen dann Variablen, um das Werkzeugteil und das Werkzeug selbst zu speichern.
-- Gibt Spielern einen Gegenstand, wenn sie ein erntbares Teil berührenlocal tool = script.Parentlocal toolPart = tool.Handle
Items überprüfen
Jedes Mal, wenn das Werkzeug ein Objekt berührt, prüft es, ob dieses Objekt CanHarvest enthält und ob der boolesche Wert auf Wahr gesetzt ist.
Erstelle eine neue Funktion mit dem Namen onTouch() mit einem Parameter namens partTouched.
local tool = script.Parentlocal toolPart = tool.Handlelocal function onTouch(partTouched)endIn dieser Funktion erstelle eine lokale Variable mit dem Namen canHarvest.Dann verwende die FindFirstChild()-Funktion, um zu sehen, ob es im Elternteil von diesem Teil ein CanHarvest-Boolean gibt.
local function onTouch(partTouched)local canHarvest = partTouched:FindFirstChild("CanHarvest")endJetzt muss das Skript überprüfen, ob tatsächlich etwas gefunden wurde und wenn ja, den Codesausführen.Um dies zu tun, erstelle eine if-Anweisung, in der die Bedingung canHarvest ist.Wenn etwas in canHarvest existiert, wird diese Aussage auf wahr bewertet.
local function onTouch(partTouched)local canHarvest = partTouched:FindFirstChild("CanHarvest")if canHarvest thenendendFüge in der if-Anweisung eine Druckanweisung hinzu, um zu sehen, ob das Skript funktioniert. Du kannst die Logik für die Ernte von Gegenständen programmieren, nachdem du sicher bist, dass es funktioniert.
if canHarvest then-- Wird zum Testen verwendet, ob Code funktioniertprint("Found an item")endUnter der Aussage der Funktion end fügen Sie toolPart.Touched:Connect(onTouch) hinzu.Dies lässt das Skript überprüfen, ob etwas das Werkzeug (oder in diesem Fall seinen Ziehpunkt) berührt und wenn ja, ruft es onTouch() auf.
local function onTouch(partTouched)local canHarvest = partTouched:FindFirstChild("CanHarvest")if canHarvest thenprint("Found an item")endendtoolPart.Touched:Connect(onTouch)Spiele das Projekt und verwende das Werkzeug an einem geernteten Element (linksklicken, um zu schwingen). Stelle sicher, dass du die Nachricht "Ein Artikelgefunden" im Ausgabe-Fenster siehst.
Problemlösungstipps
Wenn du die Nachricht nicht siehst, versuche die folgenden Tipps.
- Wenn du benutzerdefinierte Teile und Meshes verwendest, ist es möglich, einen Fehler zu erhalten.Das Skript funktioniert nur, wenn das CanHarvest-Objekt ein Kind der Teile ist, die das Werkzeug berührt.
- Stellen Sie sicher, dass das Tool im StarterPack ist, nicht im Arbeitsbereich.
- Überprüfe, ob das Teil verankert ist.
Spielerstatistiken abrufen
Bevor du die Gegenstände des Spieler:inerhöhst, muss das Werkzeug die Anzahl der Gegenstände finden, die ein Spieler in der Bestenlistedieses Spieler:inhat.Sobald das Tool Zugriff auf die Bestenlistehat, kann es die Artikelanzahl eines Spieler:inändern.
Zuerst hol dir den Spieler mit dem Werkzeug. Im ToolScript, unter local item = toolitem und über der benutzerdefinierten Funktion, eingebenein:
local item = toolitemlocal backpack = tool.Parentlocal player = backpack.Parentlocal function onTouch(partTouched)Auf der nächsten Zeile finden Sie die Spieler:indes Leaders mit der FindFirstChild()-Funktion.
local backpack = tool.Parentlocal player = backpack.Parentlocal playerStats = player:FindFirstChild("leaderstats")local function onTouch(partTouched)Unter local playerStats , erstelle Variablen, um die Statistiken für Items und Räume zu speichern
local playerStats = player:FindFirstChild("leaderstats")local playerItems = playerStats:FindFirstChild("Items")local playerSpaces = playerStats:FindFirstChild("Spaces")
Überprüfen Sie auf ein erntbares Objekt
Jetzt, da das Werkzeugskript die Variablen playerItems und playerSpaces erstellt hat, kannst du beginnen, Spielern ein Item zu geben.Verwende die erstellte Funktion, um zu überprüfen, ob das Objekt, das das Werkzeug berührt, geerntet werden kann, und ob der Spieler über genügend Platz in seiner Tasche verfügt, um die auf der Rangliste angezeigten Artikel um einen zu erhöhen.
Das Skript benötigt eine if-Anweisung mit zwei Bedingungen, die erfüllt werden müssen.Beginnen Sie mit der Erstellung einer if-Anweisung, fügen Sie dann die folgenden Bedingungen hinzu, die mit dem Schlüsselwort and verbunden sind.
- 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 thenendendendIm if-Statement selbst füge den Elementen des Spieler:inhinzu, indem du playerItems.Value += 1 eingibst.
if canHarvest thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1endendSpiele dein Projekt; verwende dein Werkzeug, um einen Artikel zu ernten und zu überprüfen, dass die Artikelanzahl gestiegen ist.
Artikel zurücksetzen
Wenn das Element erntet wird, wird es auf zwei Arten zurückgesetzt:
- Das Element verschwindet und ist nicht interaktiv
- CanHarvest auf false gesetzt
Das Element wird dann nach kurzer Zeit wieder normal sein.Auf diese Weise erhalten Spieler nur einen Artikel für jede Ernte und müssen sich nach mehr umsehen, während die ursprüngliche Wiederherstellung erfolgt.
Unterhalb, wo Artikel hinzugefügt werden, setze canHarvest auf false.Durch Setzen des Werts von canHarvest auf falsch, sobald Spieler das Element ernten, gibt das Skript nicht mehr als ein Element pro Werkzeugschlag aus.
if canHarvest thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falseendendNachdem der Wert auf false gesetzt wurde, stellen Sie die Transparenz des Teils auf 1 (unsichtbar) und CanCollide auf false ein, d. h. Spieler können es nicht berühren.
if canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falsepartTouched.Transparency = 1partTouched.CanCollide = falseendGeben Sie Typ task.wait(5) ein, um Zeit für die zurücksetzendes Elements zu geben. 5 ist eine empfohlene Zahl, und vielleicht unterscheidet sich die Länge, für die Sie Ihre Erlebnishaben möchten.
if canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falsepartTouched.Transparency = 1partTouched.CanCollide = falsetask.wait(5)endNach der Wartezeit tue das Gegenteil des vorherigen Codes, indem du das CanHarvest auf wahr setzt und die Transparenz und CanCollide auf ihre ursprünglichen Werte zurücksetzt.
task.wait(5)canHarvest.Value = truepartTouched.Transparency = 0partTouched.CanCollide = trueendSpiele das Projekt und überprüfen:
- Der Spieler erhält nur 1 Artikel für die Ernte eines Artikels.
- Das Element verschwindet und taucht dann nach fünf Sekunden wieder auf.
Problemlösungstipps
An dieser Stelle, wenn einer der Tests nicht bestanden hat, versuche einen der folgenden.
- Überprüfe, dass Transparenz und CanCollide genau geschrieben und großgeschrieben sind.
- Stellen Sie sicher, dass Sie canHarvest.Value verwenden und nicht canHarvest = true.
Abgeschlossenes ToolScript
Eine abgeschlossene Version des Skripts kann unten referenziert werden.
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
-- TeilTouched zurücksetzen, das gesammelte Artikel
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Lass das gesammelte Element wieder erscheinen und wieder verwendbar machen
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)