Récupérer des articles

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Avec le classement créé, les joueurs ont besoin de quelque chose à collecter.Pour cela, vous devez créer un élément 3D que les joueurs trouveront dans le monde.Ci-dessous, une vidéo du processus de récolte d'objets par les joueurs.

Construire un item

Les éléments de l'expérience sont des modèles 3D que les joueurs utilisent un outil pour récolter.Chaque item, une fois récolté, disparaît puis réapparaît après un temps limité.

Pour l'item, faites référence à votre document de conception de jeu. Cette série utilise des cristaux comme exemple.

  1. Créez un objet, soit en utilisant des parties ou des objets trouvés par des utilisateurs de confiance sur le marché.

    Si nécessaire, téléchargez la partie de cristal avec ce lien lien. Pour l'ajouter, faites un clic droit sur l'espace de travail et sélectionnez insérer à partir du fichier .

  2. Si vous utilisez votre propre partie, regroupez toutes les parties dans un modèle .Une façon de le faire est de sélectionner tous les éléments, de faire un clic droit sur une partie, puis de sélectionner Groupe .Cela crée un modèle qui organise vos parties.

  3. Assurez-vous que toutes les parties sont ancrées .

  4. Ainsi, les articles ne peuvent pas être récoltés pendant qu'ils disparaissent, créez un BoolValue nommé CanHarvest pour suivre son statut.

  5. Dans les propriétés pour CanHarvest, vérifiez la boîte de modélisation valeur . Vérifier la boîte de valeur rend la valeur booléenne vraie, ce qui signifie que les joueurs peuvent récolter l'item.

Créer un outil

Les joueurs ont besoin de quelque chose comme une hache ou une pelle pour récupérer des objets.Dans Roblox, les objets que les joueurs peuvent équiper et utiliser sont appelés outils .Cette leçon utilise un outil de démarrage avec toutes les parties et une animation déjà faite que vous pouvez personnaliser plus tard.

Ajouter l'outil

Pour que les joueurs utilisent l'outil de démarrage, téléchargez-le et placez-le dans le StarterPack.

  1. Téléchargez l'outil de démarrage ci-dessous.

  2. Dans Explorer, sous Espace de travail, faites un clic droit sur StarterPack. Puis, sélectionnez Insérer à partir du fichier .

  3. Sélectionnez le fichier téléchargé, starterTool.rbxm .

  4. Testez votre projet.Les joueurs devraient être équipés de l'outil dès qu'ils commencer.En jeu, appuyez sur 1 pour équiper ou ranger l'outil.Cliquez gauche pour le balancer.

Coder l'outil

Si l'outil frappe un objet récoltable et que le joueur a suffisamment d'espace dans son sac, le nombre d'objets du joueur augmente de 1 dans le classements.La récolte d'un élément le fait disparaître pendant quelques secondes et devient non récoltable pendant quelques secondes avant de réapparaître.Cela encourage les joueurs à explorer pour trouver plus d'objets, au lieu de simplement cliquer sur le même item.

Configurer le script

À ce stade, ajoutez un script à l'outil. Ce script gère ce qui se produit lorsque l'outil touche un objet récoltable.

  1. Dans StarterPack, sous StarterTool, ajoutez un nouveau script nommé ToolScript.

  2. Dans le script, écrivez un commentaire descriptif en haut, puis créez des variables pour stocker la partie outil et l'outil lui-même.


    -- Donne aux joueurs un objet lorsqu'ils touchent une partie récoltable
    local tool = script.Parent
    local toolPart = tool.Handle

Vérifier les articles

Chaque fois que l'outil touche un objet, il vérifie si cet objet a CanHarvest à l'intérieur et si le booléen est réglé sur Vrai.

  1. Créez une nouvelle fonction nommée onTouch() avec un paramètre nommé partTouched .


    local tool = script.Parent
    local toolPart = tool.Handle
    local function onTouch(partTouched)
    end
  2. Dans cette fonction, créez une variable locale nommée canHarvest.Ensuite, utilisez la fonction FindFirstChild() pour voir s'il y a un CanHarvest boolean dans le parent de cette partie.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    end
  3. Maintenant, le script doit vérifier s'il y a eu effectivement quelque chose trouvé et, si oui, exécuter le code.Pour ce faire, créez une déclaration if où la condition est canHarvest.Si quelque chose existe dans canHarvest, cette déclaration est évaluée à vrai.


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    end
    end
  4. Dans la déclaration if, ajoutez une déclaration d'impression pour voir si le script fonctionne. Vous pouvez coder la logique pour la récolte des articles après avoir été sûr qu'il fonctionne.


    if canHarvest then
    -- Utilisé pour tester si le code fonctionne
    print("Found an item")
    end
  5. Sous la déclaration de la fonction end, ajoutez toolPart.Touched:Connect(onTouch).Cela permet au script de vérifier si quelque chose touche l'outil (ou dans ce cas, sa contrôleur) et, si oui, d'appeler onTouch() .


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    print("Found an item")
    end
    end
    toolPart.Touched:Connect(onTouch)
  6. Jouez le projet et utilisez l'outil sur un élément récoltable (cliquez gauche pour balancer). Assurez-vous de voir le message « Trouvé un item» dans la fenêtre de sortie.

Conseils de dépannage

Si vous ne voyez pas le message, essayez les conseils suivants.

  • Si vous utilisez des parties et des mailles personnalisées, il est possible d'obtenir une erreur.Le script ne fonctionne que si l'objet CanHarvest est un enfant de la partie que le outil touche.
  • Assurez-vous que l'outil soit dans le StarterPack, et non dans l'Workspacede travail.
  • Vérifiez que la partie est ancrée.

Obtenir les statistiques des joueurs

Avant d'augmenter les articles du joueur, l'outil doit trouver l'emplacement du nombre d'articles que le joueur a dans le classementsce joueur.Une fois que l'outil a accès au classement, il peut modifier le nombre d'objets de ce joueur.

  1. Tout d'abord, obtenez le joueur en utilisant l'outil. Dans le script d'outil, sous local item = toolitem et au-dessus de la fonction personnalisée, saisissez :


    local item = toolitem
    local backpack = tool.Parent
    local player = backpack.Parent
    local function onTouch(partTouched)
  2. Sur la ligne suivante, trouvez les statistiques de leader du joueur en utilisant la fonction FindFirstChild().


    local backpack = tool.Parent
    local player = backpack.Parent
    local playerStats = player:FindFirstChild("leaderstats")
    local function onTouch(partTouched)
  3. En dessous de local playerStats, créez des variables pour stocker les statistiques des articles et des espaces.


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

Vérifier un objet récoltable

Maintenant que le script de l'outil a les variables playerItems et playerSpaces créées, vous pouvez commencer à donner aux joueurs un item.Utilisez la fonction créée pour vérifier si l'objet qui touche l'outil peut être récolté, et si le joueur a suffisamment d'espace dans son sac pour augmenter les articles affichés dans le classement d'un.

  1. Le script aura besoin d'une déclaration if avec deux conditions à remplir.Commencez par créer une déclaration if, puis ajoutez les conditions suivantes, connectées avec la balise 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. Dans la déclaration if elle-même, ajoutez des éléments au joueur en tapant playerItems.Value += 1 .


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    end
    end
  3. Jouez votre projet ; utilisez votre outil pour récolter un article et vérifiez que le nombre d'articles a augmenté.

Réinitialiser l'item

Lorsque l'élément est récolté, il se réinitialisera de deux manières :

  • L'élément disparaîtra et ne sera pas interactif
  • CanHarvest défini sur false

L'élément reviendra ensuite à la normale après un court laps de temps.De cette façon, les joueurs obtiennent un seul article pour chaque récolte et doivent chercher plus tout en réinitialisant l'original.

  1. En dessous où les articles sont ajoutés, définissez canHarvest à faux.En faisant la valeur de canHarvest fausse dès que les joueurs récoltent l'item, le script ne donnera pas plus d'un objet par coup d'outil.


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    end
    end
  2. Après avoir défini la valeur sur false, définissez la transparence de la partie sur 1 (invisible) et CanCollide sur false, ce qui signifie que les joueurs ne peuvent pas la toucher.


    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    end
  3. Tapez task.wait(5) pour donner du temps à l'objet de se réinitialiser. 5 est un nombre suggéré, et peut être différent pour la durée que vous souhaitez pour votre expérience.


    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. Après l'attente, faites l'inverse du code précédent en définissant le CanHarvest sur true et en réinitialisant la transparence et le CanCollide à leurs valeurs d'origine.


    task.wait(5)
    canHarvest.Value = true
    partTouched.Transparency = 0
    partTouched.CanCollide = true
    end
  5. Jouez le projet et vérifier:

    • Le joueur ne reçoit qu'un seul article pour récolter un item.
    • L'élément disparaît puis réapparaît après cinq secondes.

Conseils de dépannage

À ce stade, si l'une des vérifications n'a pas passé, essayez l'une des suivantes ci-dessous.

  • Vérifiez que la transparence et CanCollide sont orthographiées et capitalisées exactement.
  • Assurez-vous d'utiliser canHarvest.Value et non pas canHarvest = true.

Script d'outil complet

Une version terminée du script peut être référencée ci-dessous.


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
-- Réinitialiser partTouched, l'itemrécolté
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Faire réapparaître l'élément récolté et le rendre à nouveau utilisable
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)