Rendre transparent le player

Ce script Roblox rend transparents (invisibles à 75%) les joueurs ou leurs accessoires (comme un chapeau ou une épée) quand ils touchent une pièce (la part). Il vérifie si ce qui a touché la pièce est un personnage avec un Humanoid (un joueur).
Ensuite, il parcourt toutes les parties du personnage (corps, accessoires) et les rend transparentes.
Seules les pièces 3D (BasePart, MeshPart) ou les textures (Decal) sont modifiées.
QCM : Teste ta compréhension !
1. Que fait ce script quand un joueur touche la pièce ?
A) Il supprime le joueur.
B) Il rend le joueur et ses accessoires transparents.
C) Il change la couleur du joueur en rouge.
D) Il fait exploser la pièce.
2. Pourquoi vérifie-t-on if not humanoid then return end ?
A) Pour éviter que le script ne s’applique aux objets qui ne sont pas des joueurs.
B) Pour accélérer le jeu.
C) Pour rendre la pièce invisible.
D) Pour ajouter un accessoire au joueur.
3. Que signifie descendant.Transparency = 0.75 ?
A) La pièce devient complètement invisible.
B) La pièce devient à 75% transparente (presque invisible).
C) La pièce clignote.
D) La pièce devient plus grande.
4. Quel type d’objet n’est PAS modifié par ce script ?
A) Un chapeau (Accessory).
B) Une épée (MeshPart).
C) Un mur (Part).
D) Une texture (Decal) sur un accessoire.
-- Script pour rendre invisible les joueurs qui touchent la part
local part = script.Parent
part.Touched:Connect(function(hit)
local character = hit.Parent
local humanoid = character and character:FindFirstChild("Humanoid")
if not humanoid then return end
for _, chose in ipairs(character:GetChildren()) do
if chose:IsA("Accessory") then
-- Rend transparent les BasePart/Decal de l'accessoire
for _, descendant in ipairs(chose:GetDescendants()) do
if descendant:IsA("BasePart") or descendant:IsA("Decal") then
descendant.Transparency = 0.75
end
end
elseif chose:IsA("MeshPart") then
-- Le MeshPart lui-même est la part à rendre transparente
chose.Transparency = 0.75
end
end
end)
Bascule invisible/visible
Ce script Roblox permet de rendre un joueur transparent à 50% quand il touche une pièce, puis de le rendre à nouveau visible s’il la touche une deuxième fois.
Il utilise un délai de 1 seconde (COOLDOWN) pour éviter de déclencher l’effet trop vite.
Un dossier caché (Transparency) est créé dans le personnage pour « mémoriser » s’il est déjà transparent.
Seuls les joueurs (avec un Humanoid) sont concernés, et leurs accessoires ou parties du corps deviennent transparents.
QCM : Teste ta compréhension !
1. Que fait ce script quand un joueur touche la pièce pour la première fois ?
A) Il le supprime.
B) Il le rend transparent à 50%.
C) Il le rend complètement invisible.
D) Il le fait sauter.
2. Pourquoi utilise-t-on cooldowns[character] = true ?
A) Pour empêcher le joueur de déclencher l’effet plusieurs fois en 1 seconde.
B) Pour rendre le joueur invincible.
C) Pour changer la couleur de la pièce.
D) Pour ajouter un accessoire au joueur.
3. À quoi sert le dossier Transparency dans le Humanoid ?
A) À stocker si le joueur est déjà transparent pour inverser l’effet au prochain contact.
B) À rendre le joueur plus rapide.
C) À supprimer le personnage.
D) À afficher un message.
4. Que se passe-t-il si un joueur touche la pièce une deuxième fois ?
A) Il devient à nouveau visible (transparence à 0%).
B) Il devient complètement invisible.
C) Il explose.
D) Rien, le script ne fait plus rien.
-- Script pour rendre invisible les joueurs qui touchent la part
local part = script.Parent
local TRANSPARENCE_ACTIVE = 0.5
local TRANSPARENCE_INACTIVE = 0
local COOLDOWN = 1 -- secondes avant de pouvoir re-déclencher
local cooldowns = {} -- [character] = true pendant le cooldown
local function playerTransparency(character, transparency)
for _, chose in ipairs(character:GetChildren()) do
if chose:IsA("Accessory") then
-- Rend transparent les BasePart/Decal de l'accessoire
for _, descendant in ipairs(chose:GetDescendants()) do
if descendant:IsA("BasePart") or descendant:IsA("Decal") then
descendant.Transparency = transparency
end
end
elseif chose:IsA("MeshPart") then
-- Le MeshPart lui-même est la part à rendre transparente
chose.Transparency = transparency
end
end
end
part.Touched:Connect(function(hit)
local character = hit.Parent
local humanoid = character and character:FindFirstChild("Humanoid")
if not humanoid then return end
if cooldowns[character] then return end
cooldowns[character] = true
local existingFolder = humanoid:FindFirstChild("Transparency")
local transparency
if existingFolder then
existingFolder:Destroy()
transparency = TRANSPARENCE_INACTIVE
else
local folder = Instance.new("Folder")
folder.Name = "Transparency"
folder.Parent = humanoid
transparency = TRANSPARENCE_ACTIVE
end
playerTransparency(character, transparency)
task.wait(COOLDOWN)
cooldowns[character] = nil
end)
Gestion d’un folder pour gérer plusieurs parts pour rendre invisible

-- Boucle sur toutes les parts du folder des parts pour rendre invisible
local folder = workspace:FindFirstChild("Zone Invisibilite", true)
for _, part in ipairs(folder:GetChildren()) do
if not part:IsA("BasePart") then return end
part.Touched:Connect(function(hit)
local character = hit.Parent
local humanoid = character and character:FindFirstChild("Humanoid")
if not humanoid then return end
if cooldowns[character] then return end
cooldowns[character] = true
local existingFolder = humanoid:FindFirstChild("Transparency")
local transparency
if existingFolder then
existingFolder:Destroy()
transparency = TRANSPARENCE_INACTIVE
else
local folder = Instance.new("Folder")
folder.Name = "Transparency"
folder.Parent = humanoid
transparency = TRANSPARENCE_ACTIVE
end
playerTransparency(character, transparency)
task.wait(COOLDOWN)
cooldowns[character] = nil
end)
end
Traverser un mur quand le player est transparent

Quand un personnage touche la Part, le script vérifie s’il a un Humanoid possédant un attribut/valeur nommé "Transparency" , si oui, il rend la Part traversable (CanCollide = false).
Quand ce même personnage arrête de toucher la Part (TouchEnded), le script refait la vérification et remet la Part solide (CanCollide = true).
Résultat : c’est un bloc qui devient traversable uniquement pour les joueurs possédant la valeur « Transparency » (par exemple des joueurs rendus invisibles/fantômes ailleurs dans le jeu), et redevient solide dès qu’ils sont passés.
QCM : Teste ta compréhension !
1. Que vérifie le script avant de rendre la Part traversable ?
A. Que le joueur a un pseudo spécial
B. Que le personnage possède une valeur nommée « Transparency »
C. Que le joueur est en l’air
D. Que la Part est de couleur rouge
2. Que fait part.CanCollide = false ?
A. Le bloc devient invisible
B. Le bloc disparaît définitivement
C. Le bloc laisse passer les objets/joueurs à travers
D. Le bloc explose
3. Quand se déclenche l’événement TouchEnded ?
A. Quand le joueur commence à toucher la Part
B. Quand le joueur arrête de toucher la Part
C. Quand le joueur meurt
D. Quand le jeu se termine
4. Que se passe-t-il si un joueur SANS la valeur « Transparency » touche la Part ?
A. Il traverse quand même le bloc
B. Rien ne change, la Part reste solide pour lui
C. Il devient invisible
D. La Part se détruit
5. Pourquoi remet-on CanCollide = true dans TouchEnded ?
A. Pour empêcher d’autres joueurs (sans la bonne valeur) de traverser après
B. Pour changer la couleur du bloc
C. Pour supprimer le joueur
D. Pour recommencer le jeu
local part = script.Parent
part.Touched:Connect(function(hit)
local character = hit.Parent
local humanoid = character and character:FindFirstChild("Humanoid")
if not humanoid then return end
local existingFolder = humanoid:FindFirstChild("Transparency")
if not existingFolder then return end
part.CanCollide= false
end)
part.TouchEnded:Connect(function(hit)
local character = hit.Parent
local humanoid = character and character:FindFirstChild("Humanoid")
if not humanoid then return end
local existingFolder = humanoid:FindFirstChild("Transparency")
if not existingFolder then return end
part.CanCollide= true
end)
