Gegenstände 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, brauchen Spieler etwas, um sie zu sammeln. Dafür musst du ein 3D-Item für Spieler erstellen, die in der Welt finden. Im folgenden ist ein Video des Prozesses der Spieler, die Items ernten.

Baue einen Gegenstand auf

Gegenstände in der Erfahrung sind 3D-Modelle, die Spieler mit einem Werkzeug ernten. Jeder Artikel, einmal erntet, verschwindet und wird dann nach einer begrenzten Zeit wieder eingeführt.

Für das Artikelbeziehen Sie sich auf Ihren Spiel-Design-Dokument. Diese Serie verwendet Kristalle als Beispiel.

  1. Erstellen Sie ein Objekt, entweder mit dem Verwenden von Teilen oder Objekten, die von vertrauenswürdigen Benutzern im 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 die Arbeitsfläche und wählen Sie Datei einfügen .

  2. Wenn Sie Ihr eigenes Teil verwenden, gruppieren Sie alle Teile in ein Modell . Ein Weg, dies zu tun, ist, alle Elemente auszuwählen, mit der rechten Maustaste auf ein Element zu klicken und Gruppen auszuwählen. Dies erstellt ein Modell, das Ihre Teile organisiert.

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

  4. So können keine Gegenstände gesammelt werden, während sie verschwinden, erstellen Sie einen BoolValue namens CanHarvest, um seinen Status zu verfolgen.

  5. In Eigenschaften für CanHarvest überprüfen Sie die Auswahlbox . Wenn Sie die Werte-Schaltfläche überprüfen, macht die Boolean-Schaltfläche wahr, sodass Spieler das Artikelernten können.

Ein Werkzeug erstellen

Spieler brauchen etwas wie eine Axt oder eine Schaufel, um Gegenstände mit zu sammeln. In Roblox heißen Gegenstände, die Spieler ausrüsten und verwenden, Werkzeuge . Diese Lektion verwendet ein Starter-Werkzeug mit allen Teilen und einer Animation, die Sie später anpassen können.

Das Werkzeug hinzufügen

Damit Spieler das Starter-Tool verwenden können, laden Sie es herunter und platzieren Sie es in StarterPack.

  1. Laden Sie das Starter-Tool unten herunter.

  2. In Explorer, unter Arbeitsbereich, klicken Sie mit der rechten Maustaste auf StarterPack. Then, select Einfügen aus Datei .

  3. Wählen Sie den heruntergeladenen Datei, starterTool.rbxm .

  4. Teste dein Projekt. Spieler sollten mit dem Werkzeug ausgerüstet sein, sobald sie starten. Im Spiel, drücken Sie 1 , um das Toolauszurüsten oder abzulegen. Linksklick zum Auswischen.

Das Werkzeug codieren

Wenn das Werkzeug ein Erntablevel erreicht und der Spieler genug Platz in seiner Tasche hat, erhöht sich die Itemanzahl des Spieler:inum 1 auf der Bestenliste. Wenn ein Item erntet wird, verschwindet es für einige Sekunden und wird für einige Sekunden unerntebar, bevor es wiedererscheint. Dies ermutigt Spieler, sich zu entwickeln, um mehr Gegenstände zu finden, anstatt einfach auf dieselbe Artikelzu klicken.

Script einrichten

Fügen Sie an diesem Punkt ein Skript dem Toolhinzu. Dieses Skript behandelt, was passiert, wenn das Werkzeug ein Objektberührt.

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

  2. Im Skript, das. PL: die Skriptsschreiben Sie einen beschreibenden Kommentar oben und erstellen dann Variablen, um den Werkzeug-Teil und das Werkzeug selbst zu speichern.


    -- Gibt den Spielern das Item, wenn sie einen erntbaren Teil berühren
    local tool = script.Parent
    local toolPart = tool.Handle

Items überprüfen

Wenn das Werkzeug ein Objekt berührt, prüft es, ob dieses Objekt CanHarvest in sich hat, und ob derBoolean auf True gesetzt ist.

  1. Erstellen Sie eine neue Funktion namens onTouch() mit einem Parameter namens partTouched.


    local tool = script.Parent
    local toolPart = tool.Handle
    local function onTouch(partTouched)
    end
  2. In dieser Funktion erstellen Sie eine lokale Variable namens canHarvest . Dann verwenden Sie die Funktion FindFirstChild(), um zu sehen, ob es CanHarvest ist, oder nicht.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    end
  3. Jetzt muss das Skript überprüfen, ob es tatsächlich etwas gefunden wurde und wenn ja, den Codesausführen. Um dies zu tun, erstellen Sie ein if- Statement, in dem die Bedingung canHarvest ist. Wenn etwas in canHarvest existiert, bewertet diese Anweisung als wahr.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    end
    end
  4. In der if-Anweisung fügen Sie eine druck-Anweisung hinzu, um zu sehen, ob das Skript funktioniert. Sie können die Logik für die Erfassung von Gegenständen hinzufügen, nachdem Sie sicher sind, dass es funktioniert.


    if canHarvest then
    -- Wird verwendet, um zu testen, ob der Code funktioniert
    print("Found an item")
    end
  5. Unter der Funktion's end Anweisung, füge toolPart.Touched:Connect(onTouch) hinzu. Dies ermöglicht es dem Skript zu überprüfen, ob etwas das Werkzeug berührt (oder in diesem Fall seine Ziehpunkt) und wenn ja, aufruft onTouch().


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    print("Found an item")
    end
    end
    toolPart.Touched:Connect(onTouch)
  6. Spielen Sie das Projekt und verwenden Sie das Werkzeug auf einem erntbaren Element ( links-klicken, um zu schwingen). Stellen Sie sicher, dass Sie die Nachricht "Ein Artikelgefunden" im Ausgabe-Fenster sehen.

Troubleshooting-Tipps

Wenn Sie die Nachricht nicht sehen, versuchen Sie die folgenden Tipps.

  • Wenn Sie benutzerdefinierte Teile und Meshes verwenden, ist es möglich, einen Fehler zu erhalten. Das Skript funktioniert nur, wenn das CanHarvest-Objekt ein Kind des Teils ist, auf den das Werkzeug berührt.
  • Stellen Sie sicher, dass das Werkzeug in der StarterPack ist, nicht in der Arbeitsbereich.
  • Überprüfen Sie, dass der Teil verankert ist.

Spielerstatistiken erhalten

Bevor die Elemente des Spieler:inerhöht werden, muss das Werkzeug den Standort finden, wie viele Elemente ein Spieler in der Bestenlistehat. Sobald das Werkzeug Zugriff auf die Bestenlistehat, kann es die Anzahl der Elemente des Spieler:inändern.

  1. Erstellen Sie zuerst den Spieler mit dem Werkzeug. Im ToolScript unter local item = toolitem und über der benutzerdefinierten Funktion, eingebenSie:


    local item = toolitem
    local backpack = tool.Parent
    local player = backpack.Parent
    local function onTouch(partTouched)
  2. In der nächsten Zeile finden Sie die Leaderstatistik des Spieler:inmit der Funktion FindFirstChild().


    local backpack = tool.Parent
    local player = backpack.Parent
    local playerStats = player:FindFirstChild("leaderstats")
    local function onTouch(partTouched)
  3. Unter local playerStats , erstellen Sie Variablen, um die Artikel und Statistiken der Plätze zu speichern.


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

Checken für ein Erntbares Objekt

Da das Werkzeugskript jetzt die Variablen playerItems und playerSpaces erstellt hat, kannst du den Spielern ein Artikelgeben. Verwende die Funktion, die erstellt wurde, um zu überprüfen, ob das Werkzeug, das das Werkzeug berührt, gesammelt werden kann, und ob der Spieler genug Platz in seiner Tasche hat, um die Elemente, die auf der Leaderboard angezeigt werden, um einen zu erhöhen.

  1. Das Skript benötigt ein if-Anweisung mit zwei Bedingungen, die erfüllt werden müssen. Starten Sie mit der Erstellung eines if-Anweisung, dann fügen Sie die folgenden Bedingungen hinzu, die mit dem and-Kennwort 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. In der if-Anweisung selbst fügen Sie dem Spieler:indurch das Schreiben playerItems.Value += 1 hinzu.


    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 Gegenstand zu ernten und zu überprüfen, dass die Gegenstandszahl aufgestiegen ist.

Item zurücksetzen

Wenn das Item gesammelt wird, wird es in zwei Arten zurückgesetzt:

  • Der Gegenstand verschwindet und ist nicht interaktiv
  • CanHarvest auf falsch gesetzt

Der Gegenstand wird dann nach einer kurzen Zeit wieder normal. Dieser Weg erlaubt es den Spielern, nur ein Gegenstand für jede Ernte zu erhalten, und die Spieler müssen während der Original-Zurücksetzung auf mehrere Gegenstände suchen.

  1. Unter dem, wo Artikelhinzugefügt werden, setzen Sie canHarvest auf falsch. Indem Sie den Wert von canHarvest falsch machen, geben Sie das Skript nicht mehr als ein Gegenstand pro Werkzeug getroffen.


    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 ist, setzen Sie die Transparenz des Teils auf 1 (unsichtbar) und CanCollide auf false, was bedeutet, dass Spieler nicht darauf berühren können.


    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 task.wait(5) ein, um Zeit für die zurücksetzendes Elements zu geben. 5 ist eine empfohlene Zahl, und vielleicht unterscheiden Sie sich, wie lange Sie Ihr Erlebnis wünschen.


    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 Warte, tun Sie das Gegenteil des vorherigen Codes, indem Sie CanHarvest auf true einstellen und die Transparenz und CanCollide auf ihre Standardwerte zurücksetzen.


    task.wait(5)
    canHarvest.Value = true
    partTouched.Transparency = 0
    partTouched.CanCollide = true
    end
  5. Spielen Sie das Projekt und überprüfen Sie:

    • Der Spieler erhält nur 1 Artikel für die Erntung eines Artikels.
    • Der Gegenstand verschwindet und taucht dann nach fünf Sekunden wieder auf.

Troubleshooting-Tipps

An dieser Stelle, wenn einer der Checks nicht bestanden hat, versuchen Sie es mit einer der folgenden Optionen.

  • Überprüfen Sie, dass Transparency und CanCollide korrekt geschrieben und kapitalisiert sind.
  • Stellen Sie sicher, dass Sie canHarvest.Value verwenden und nicht canHarvest = true.

Schließe das ToolScript ab

Eine fertige Version des Skripts kann unten verwendet 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
-- Reset partTouched, die erntete Artikel
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Lassen Sie das gesammelte Element wieder erscheinen und wiederverwenden
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)