Récupération des éléments

*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 ce faire, vous devez créer un élément 3D pour les joueurs à trouver dans le monde. Voici une vidéo du processus de récolte des objets des joueurs.

Construire un élément

Les objets dans 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 et réapparaît après une durée limitée.

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

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

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

  2. Si vous utilisez votre propre partie, regrouper toutes les parties dans un modèle . L'une des façons d'y parvenir est de sélectionner tous les éléments, de cliquer dessus avec le bouton droit de la souris et de sélectionner Groupement . 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 . En vérifiant la case valeur, vous faites en sorte que le bouton est vrai, ce qui signifie que les joueurs peuvent récolter l'item.

Créer un outil

Les joueurs ont besoin d'une hache ou d'une pelle pour rassembler des objets avec. Dans Roblox, les outils que les joueurs peuvent équiper et utiliser sont appelés outils . Cette leçon utilise un outil de démarrage avec toutes les pièces et une animation déjà faite que vous pouvez personnaliser plus tard.

Ajout de 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 Workspace, 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 avec l'outil dès qu'ils commencer. En jeu, appuyez sur 1 pour équiper ou enlever l'outil. Cliquez avec le bouton gauche pour frapper.

Codage de l'outil

Si l'outil touche un objet récoltable et que le joueur a suffisamment d'espace dans son sac, le nombre d'objets du joueur augmente de 1 sur le classements. L'achat d'un objet fait apparaître l'objet pendant quelques secondes et le rend inexploitable 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 moment, ajoutez un script à l'outil. Ce script gère ce qui se passe quand 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 au-dessus, puis créez des variables pour stocker la partie de l'outil et l'outil lui-même.


    -- Donne aux joueurs l'article quand ils touchent une partie récoltable
    local tool = script.Parent
    local toolPart = tool.Handle

Vérification des éléments

Lorsque l'outil touche un objet, il vérifie si cet objet a CanHarvest à l'intérieur et si le bouté 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 . Puis, utilisez la fonction FindFirstChild() pour voir si il y a un bout de code CanHarvest 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 avait en fait quelque chose trouvé et, si oui, exécuter le code. Pour ce faire, créez une if statement où la condition est canHarvest. Si quelque chose existe dans canHarvest, cette if statement se valide à 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 de printemps pour voir si le script fonctionne. Vous pouvez codé la logique pour la récolte des articles après être 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 fonction end, ajoutez toolPart.Touched:Connect(onTouch). Cela permet au script de vérifier si quelque chose touche l'outil (ou dans ce cas, son 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 objet récoltable (cliquez avec le bouton gauche pour frapper). Assurez-vous de voir le message « Vous avez trouvé un itemdans la fenêtre de sortie.

Conseils de débogage

Si vous ne voyez pas le message, essayez les astuces suivantes.

  • 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 l'outil touche.
  • Assurez-vous que l'outil est dans le StarterPack, non dans l'espace de Workspace.
  • Vérifiez que la partie est ancrée.

Obtenir les statistiques du joueur

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

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


    local item = toolitem
    local backpack = tool.Parent
    local player = backpack.Parent
    local function onTouch(partTouched)
  2. Sur la prochaine ligne, 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. Sous local playerStats, créez des variables pour stocker les statistiques des éléments et des espaces.


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

Vérification d'un objet récoltable

Maintenant que le script de l'outil a les variables playerItems et playerSpaces créées, vous pouvez commencer à donner des itemaux joueurs. Utilisez la fonction créée pour vérifier si l'objet touchant l'outil peut être récolté, et si le joueur a assez d'espace dans son sac pour augmenter les articles affichés sur le tableau de bord d'un.

  1. Le script aura besoin d'une if statement avec deux conditions à remplir. Commencez par créer une if statement, puis ajoutez les conditions suivantes, connectées avec le mot-clé 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 aux éléments du 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 élément et vérifier que le nombre d'éléments a augmenté.

Réinitialisation de l'objet

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

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

L'article va ensuite à nouveau à la normale après un court lapse de temps. De cette façon, les joueurs ne reçoivent qu'un seul article pour chaque récolte, et doivent chercher autour de plus pendant que le réinitialiseur original se réinitialise.

  1. Sous où les articles sont ajoutés, définissez canHarvest sur false. En faisant que la valeur de canHarvest est fausse dès que les joueurs récoltent l'item, le script ne donnera pas plus d'un article par outil touché.


    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, set the part's Transparency to 1 (invisible), et CanCollide to false, ce qui signifie que les joueurs ne peuvent pas l' 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 pour que l'élément se réinitialiser. 5 est un nombre suggéré, et peut-être différent pour la durée de 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 la récupération, faites le contraire du code précédent, en réglant le CanHarvest sur vrai et en réinitialisant la Transparence et 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 que 1 article pour récolter un item.
    • L'élément disparaît et réapparaît après cinq secondes.

Conseils de débogage

À ce stade, si l'un des contrôles n'a pas passé, essayez l'un des suivants ci-dessous.

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

Compléter ToolScript

Une version finie 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éinitialisez la partieTouched, l'item récolté
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- Faites réapparaître l'élément récolté et réutilisable
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)