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.
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 .
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.
Assurez-vous que toutes les parties sont ancrées .
Ainsi, les articles ne peuvent pas être récoltés pendant qu'ils disparaissent, créez un BoolValue nommé CanHarvest pour suivre son statut.
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.
Dans Explorer, sous Espace de travail, faites un clic droit sur StarterPack. Puis, sélectionnez Insérer à partir du fichier .
Sélectionnez le fichier téléchargé, starterTool.rbxm .
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.
Dans StarterPack, sous StarterTool, ajoutez un nouveau script nommé ToolScript.
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écoltablelocal tool = script.Parentlocal 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.
Créez une nouvelle fonction nommée onTouch() avec un paramètre nommé partTouched .
local tool = script.Parentlocal toolPart = tool.Handlelocal function onTouch(partTouched)endDans 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")endMaintenant, 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 thenendendDans 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 fonctionneprint("Found an item")endSous 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 thenprint("Found an item")endendtoolPart.Touched:Connect(onTouch)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.
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 = toolitemlocal backpack = tool.Parentlocal player = backpack.Parentlocal function onTouch(partTouched)Sur la ligne suivante, trouvez les statistiques de leader du joueur en utilisant la fonction FindFirstChild().
local backpack = tool.Parentlocal player = backpack.Parentlocal playerStats = player:FindFirstChild("leaderstats")local function onTouch(partTouched)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.
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 thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenendendendDans la déclaration if elle-même, ajoutez des éléments au joueur en tapant playerItems.Value += 1 .
if canHarvest thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1endendJouez 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.
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 thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falseendendAprè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 thenplayerItems.Value += 1canHarvest.Value = falsepartTouched.Transparency = 1partTouched.CanCollide = falseendTapez 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 thenplayerItems.Value += 1canHarvest.Value = falsepartTouched.Transparency = 1partTouched.CanCollide = falsetask.wait(5)endAprè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 = truepartTouched.Transparency = 0partTouched.CanCollide = trueendJouez 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)