Artikel sammeln

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

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.

  1. 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 .

  2. 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.

  3. Stellen Sie sicher, dass alle Teile verankert sind.

  4. Daher können Artikel nicht geerntet werden, während sie verschwinden, erstelle einen BoolValue mit dem Namen CanHarvest, um seinen Status zu verfolgen.

  5. 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.

  1. Laden Sie das Starter-Tool unten herunter.

  2. In Explorer, unter Arbeitsbereich, klicken Sie mit der rechten Maustaste auf StarterPack. Dann wählen Sie Aus der Datei einfügen .

  3. Wählen Sie die heruntergeladene Datei, starterTool.rbxm.

  4. 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.

  1. In StarterPack, unter StarterTool, füge ein neues Skript namens ToolScript hinzu.

  2. 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ühren
    local tool = script.Parent
    local 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.

  1. Erstelle eine neue Funktion mit dem Namen onTouch() mit einem Parameter namens partTouched.


    local tool = script.Parent
    local toolPart = tool.Handle
    local function onTouch(partTouched)
    end
  2. In 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")
    end
  3. Jetzt 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 then
    end
    end
  4. Fü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 funktioniert
    print("Found an item")
    end
  5. Unter 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 then
    print("Found an item")
    end
    end
    toolPart.Touched:Connect(onTouch)
  6. 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.

  1. Zuerst hol dir den Spieler mit dem Werkzeug. Im ToolScript, unter local item = toolitem und über der benutzerdefinierten Funktion, eingebenein:


    local item = toolitem
    local backpack = tool.Parent
    local player = backpack.Parent
    local function onTouch(partTouched)
  2. Auf der nächsten Zeile finden Sie die Spieler:indes Leaders mit der FindFirstChild()-Funktion.


    local backpack = tool.Parent
    local player = backpack.Parent
    local playerStats = player:FindFirstChild("leaderstats")
    local function onTouch(partTouched)
  3. 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.

  1. 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 then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    end
    end
    end
  2. Im if-Statement selbst füge den Elementen des Spieler:inhinzu, indem du playerItems.Value += 1 eingibst.


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    end
    end
  3. Spiele 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.

  1. 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 then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    end
    end
  2. Nachdem 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 then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    end
  3. Geben 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 then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    task.wait(5)
    end
  4. Nach 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 = true
    partTouched.Transparency = 0
    partTouched.CanCollide = true
    end
  5. Spiele 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)