Catégories
Jeu vidéo ROBLOX

Devenir invisible en touchant un part

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)