Dans ce module, tu vas apprendre à :
👉 À la fin de ce module, ton jeu aura un vrai système de progression !
Pour que Roblox sache combien de pièces le joueur possède, il faut créer un dossier spécial appelé leaderstats.
ScoreManager.game.Players.PlayerAdded:Connect(function(player)
-- Création du dossier leaderstats
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
-- Création de la valeur "Pieces"
local score = Instance.new("IntValue")
score.Name = "Pieces" -- C'est le nom qui s'affichera en haut
score.Value = 0
score.Parent = leaderstats
end)
Maintenant, on crée l’objet physique que le joueur va ramasser.
Ce script détecte quand un joueur touche la pièce, augmente son score, puis fait disparaître la pièce.
local piece = script.Parent
local dejaRamasse = false
function onTouch(objetQuiTouche)
local joueur = game.Players:GetPlayerFromCharacter(objetQuiTouche.Parent)
if joueur and not dejaRamasse then
dejaRamasse = true -- Empêche de ramasser la pièce plusieurs fois
-- On augmente le score du joueur
joueur.leaderstats.Pieces.Value = joueur.leaderstats.Pieces.Value + 1
-- On fait disparaître la pièce
piece:Destroy()
end
end
piece.Touched:Connect(onTouch)
Une pièce statique est moins jolie. Ajoutons un peu de mouvement avec une boucle !
local piece = script.Parent
while true do
piece.CFrame = piece.CFrame * CFrame.Angles(0, 0.1, 0)
task.wait(0.05)
end
Sound) à l’intérieur de la pièce qui se joue au moment où on la ramasse.Dans le script qui suit, les parties à compléter sont désignées par ___.
Rappel : ce script va dans le ServerScriptService.
game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "___" -- Doit s'appeler comme ça pour s'afficher
leaderstats.Parent = player
local score = Instance.new("IntValue")
score.Name = "Pieces"
score.Value = ___ -- Valeur de départ
score.Parent = leaderstats
end)
Dans le script qui suit, les parties à compléter sont désignées par ___.
Ce script va à l’intérieur de ta pièce.
local piece = script.Parent
local vitesse = 0.2 -- Change cette valeur pour aller plus vite ou moins vite
while true do
-- On fait tourner la pièce sur l'axe Y
piece.CFrame = piece.CFrame * CFrame.Angles(0, ___, 0)
task.wait(___) -- Temps entre chaque petit mouvement
end