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.
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 .
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.
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 . 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.
Dans Explorer, sous Workspace, 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 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.
Dans StarterPack, sous StarterTool, ajoutez un nouveau script nommé ToolScript.
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écoltablelocal tool = script.Parentlocal 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.
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 . 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")endMaintenant, 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 thenendendDans 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 fonctionneprint("Found an item")endSous 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 thenprint("Found an item")endendtoolPart.Touched:Connect(onTouch)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.
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 = toolitemlocal backpack = tool.Parentlocal player = backpack.Parentlocal function onTouch(partTouched)Sur la prochaine ligne, 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)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.
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 thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenendendendDans la déclaration if elle-même, ajoutez aux éléments du 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 é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.
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 thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falseendendAprè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 thenplayerItems.Value += 1canHarvest.Value = falsepartTouched.Transparency = 1partTouched.CanCollide = falseendTapez 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 thenplayerItems.Value += 1canHarvest.Value = falsepartTouched.Transparency = 1partTouched.CanCollide = falsetask.wait(5)endAprè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 = truepartTouched.Transparency = 0partTouched.CanCollide = trueendJouez 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)