Ce script permet de rendre un joueur presque invisible quand il touche une pièce spéciale (Part).
- Effet : Le corps du joueur et ses accessoires (chapeau, lunettes, etc.) deviennent transparents à 80% (presque invisibles).
- Déclencheur : Quand le joueur touche la pièce
Part(dans le dossierFolder).
Créer un part « JumpPart » sous un folder « JumpFolder »pour donner au joueur le pouvoir de courir plus vite :
Objets à créer dans Roblox Studio
Pour que le script fonctionne, il faut créer :
- Un dossier dans le
Workspace:- Nom :
Folder.
- Nom :
- Une pièce dans ce dossier :
- Nom :
Part. - Type :
BasePart(un cube, une sphère, etc.).
- Nom :

Crée un script dans ServerScriptService :
local heightScaleFolder = workspace:WaitForChild("Folder")
local heightScale = heightScaleFolder:WaitForChild("Part")
heightScale.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
for _, child in pairs(character:GetChildren()) do
if child:IsA("Accessory") then
for _, descendant in pairs(child:GetDescendants()) do
if descendant:IsA("BasePart") or descendant:IsA("Decal") then
descendant.Transparency = 0.8
end
end
elseif child:IsA("MeshPart") then
child.Transparency = 0.8
end
end
end)
Explication du code pas à pas
1. Récupérer les objets dans le Workspace
local heightScaleFolder = workspace:WaitForChild("Folder")
local heightScale = heightScaleFolder:WaitForChild("Part")
workspace:WaitForChild("Folder"):- Attend que le dossier
Folderexiste dans leWorkspace. - Si le dossier n’existe pas encore, le script attend qu’il soit créé.
- Attend que le dossier
heightScaleFolder:WaitForChild("Part"):- Attend que la pièce
Partexiste dans le dossierFolder.
- Attend que la pièce
💡 Pourquoi
WaitForChild?
- Cela évite les erreurs si les objets ne sont pas encore créés quand le script s’exécute.
2. Détecter quand un joueur touche la pièce
heightScale.Touched:Connect(function(hit)
heightScale.Touched:- Événement déclenché quand un objet touche la pièce
Part.
- Événement déclenché quand un objet touche la pièce
hit:- C’est l’objet qui a touché la pièce (ex: la tête, le torse ou un bras du joueur).
3. Récupérer le modèle du personnage
local character = hit:FindFirstAncestorOfClass("Model")
hit:FindFirstAncestorOfClass("Model"):- Cherche le premier ancêtre de
hitqui est unModel. - En Roblox, le personnage d’un joueur est un
Modelcontenant toutes ses parties (tête, bras, jambes, etc.). - Si
hitest une partie du corps (ex:Head), cette fonction renvoie le modèle du joueur (Character).
- Cherche le premier ancêtre de
4. Parcourir toutes les parties du personnage
for _, child in pairs(character:GetChildren()) do
character:GetChildren():- Récupère tous les objets enfants du modèle du joueur (ex:
Head,Torso,RightArm, accessoires, etc.).
- Récupère tous les objets enfants du modèle du joueur (ex:
pairs:- Parcourt chaque enfant un par un (comme une boucle
foren Python).
- Parcourt chaque enfant un par un (comme une boucle
_:- Variable temporaire (on ne l’utilise pas, c’est juste pour la syntaxe).
5. Gérer les accessoires (chapeaux, lunettes, etc.)
if child:IsA("Accessory") then
for _, descendant in pairs(child:GetDescendants()) do
if descendant:IsA("BasePart") or descendant:IsA("Decal") then
descendant.Transparency = 0.8
end
end
end
child:IsA("Accessory"):- Vérifie si
childest un accessoire (ex: un chapeau, des lunettes, une épée, etc.).
- Vérifie si
child:GetDescendants():- Récupère toutes les parties de l’accessoire (ex: les pièces qui composent le chapeau).
descendant:IsA("BasePart") or descendant:IsA("Decal"):- Vérifie si
descendantest :- Une pièce de base (
BasePart, comme un cube). - Un autocollant (
Decal, comme une texture sur un chapeau).
- Une pièce de base (
- Vérifie si
descendant.Transparency = 0.8:- Rend l’objet transparent à 80% (0 = invisible, 1 = opaque).
- Effet : L’accessoire devient presque invisible.
💡 Pourquoi 0.8 ?
0= complètement invisible.1= complètement opaque (visible normalement).0.8= très transparent (presque invisible, mais encore un peu visible).
6. Gérer les parties du corps (MeshPart)
elseif child:IsA("MeshPart") then
child.Transparency = 0.8
end
child:IsA("MeshPart"):- Vérifie si
childest une pièce avec un maillage (MeshPart). - En Roblox, les parties du corps des joueurs modernes (comme dans R15) sont souvent des
MeshPart.
- Vérifie si
child.Transparency = 0.8:- Rend la pièce transparente à 80%.
❓ Pourquoi seulement
MeshPart?
- Dans les anciens modèles de joueurs (R6), les parties du corps étaient des
Part.- Dans les modèles modernes (R15), elles sont souvent des
MeshPart.- Ce script ne gère pas les
Partclassiques (commeHeadouTorsoen R6).- Pour une invisibilité complète, il faudrait aussi gérer les
Part.
Limites du script actuel
- Ne gère pas les
Partclassiques (commeHead,Torsoen R6) :- Ces parties restent visibles.
- Pour les rendre invisibles, il faudrait ajouter :luaCopier
elseif child:IsA("Part") then child.Transparency = 0.8 end
- Ne gère pas les
Humanoidou autres composants :- Certains éléments (comme les effets de lumière) ne sont pas affectés.
QCM pour tester la compréhension
Questions sur le script « Pouvoir d’invisibilité »
- Que fait
workspace:WaitForChild("Folder")?- A. Crée un dossier nommé
Folder. - B. Attend que le dossier
Folderexiste dans leWorkspace. - C. Supprime le dossier
Folder. - D. Change la couleur du dossier.
- A. Crée un dossier nommé
- Que représente
hitdansheightScale.Touched:Connect(function(hit)?- A. La pièce
Partelle-même. - B. La partie du joueur qui a touché
Part(ex: la main, la tête). - C. Le script Lua.
- D. Le dossier
Folder.
- A. La pièce
- À quoi sert
hit:FindFirstAncestorOfClass("Model")?- A. Trouve la pièce
Part. - B. Trouve le modèle du personnage (le joueur entier).
- C. Trouve l’Humanoid directement.
- D. Change la taille de la pièce.
- A. Trouve la pièce
- Que fait
descendant.Transparency = 0.8?- A. Rend l’objet complètement invisible.
- B. Rend l’objet transparent à 80% (presque invisible).
- C. Change la couleur de l’objet.
- D. Supprime l’objet.
- Pourquoi utilise-t-on
child:IsA("Accessory")?- A. Pour vérifier si
childest une partie du corps. - B. Pour vérifier si
childest un accessoire (chapeau, lunettes, etc.). - C. Pour changer la taille du joueur.
- D. Pour supprimer l’accessoire.
- A. Pour vérifier si
- Que se passe-t-il si un joueur touche la pièce
Part?- A. Le joueur disparaît complètement.
- B. Le joueur et ses accessoires deviennent presque invisibles (80% de transparence).
- C. Le joueur saute plus haut.
- D. Le joueur change de taille.
- Pourquoi le script utilise
MeshPartet pasPart?- A. Parce que
Partn’existe pas en Lua. - B. Parce que les modèles de joueurs modernes (R15) utilisent des
MeshPartpour les parties du corps. - C. Parce que
MeshPartest plus rapide. - D. Parce que c’est une erreur dans le script.
- A. Parce que
- Si on veut rendre le joueur complètement invisible, que doit-on modifier ?
- A. Remplacer
0.8par1. - B. Remplacer
0.8par0. - C. Supprimer la ligne
descendant.Transparency = 0.8. - D. Ajouter
child:Destroy().
- A. Remplacer
- Que faut-il ajouter pour que les parties classiques (
Part) deviennent aussi invisibles ?- A. Rien, c’est déjà géré.
- B. Ajouter
elseif child:IsA("Part") then child.Transparency = 0.8 end. - C. Ajouter
child:Destroy(). - D. Changer
MeshPartenBasePart.
Exercices pratiques
1. Rendre le joueur complètement invisible
Modifie le script pour que le joueur devienne 100% invisible (au lieu de 80%).
Solution :
Remplace0.8par1dans toutes les lignesTransparency.luaCopier
descendant.Transparency = 1 child.Transparency = 1
2. Ajouter la gestion des Part classiques (pour R6)
Modifie le script pour qu’il rende aussi les parties classiques (Part) invisibles.
Solution :
Ajoute une condition pour lesPart:luaCopier
elseif child:IsA("Part") then child.Transparency = 0.8 end
3. Rendre seulement les accessoires invisibles (pas le corps)
Modifie le script pour que seuls les accessoires deviennent invisibles, mais pas le corps du joueur.
Solution :
Supprime la partie qui gère lesMeshPart:luaCopier
for _, child in pairs(character:GetChildren()) do if child:IsA("Accessory") then for _, descendant in pairs(child:GetDescendants()) do if descendant:IsA("BasePart") or descendant:IsA("Decal") then descendant.Transparency = 0.8 end end end end
4. Ajouter un effet temporaire (invisibilité pendant 5 secondes)
Modifie le script pour que le joueur redevienne visible après 5 secondes.
Indice :
Utilisetask.wait(5)et sauvegarde les objets modifiés dans une table.
Solution :luaCopier
heightScale.Touched:Connect(function(hit) local character = hit:FindFirstAncestorOfClass("Model") if not character then return end local transparentObjects = {} -- Tableau pour stocker les objets modifiés for _, child in pairs(character:GetChildren()) do if child:IsA("Accessory") then for _, descendant in pairs(child:GetDescendants()) do if descendant:IsA("BasePart") or descendant:IsA("Decal") then table.insert(transparentObjects, descendant) -- Sauvegarde l'objet descendant.Transparency = 0.8 end end elseif child:IsA("MeshPart") then table.insert(transparentObjects, child) -- Sauvegarde l'objet child.Transparency = 0.8 end end -- Attend 5 secondes task.wait(5) -- Rétablit la transparence normale for _, obj in pairs(transparentObjects) do obj.Transparency = 0 end end)
Si tu veux tester ces modifications ou si tu as d’autres questions, n’hésite pas !
