Catégories
Jeu vidéo ROBLOX ROBLOX-NIVEAU01

Change la taille du joueur

Ce script permet de changer la taille du joueur quand il passe à travers un bloc spécial (Part).

  • Effet : Le joueur devient 30% de sa taille normale (très petit !).
  • Déclencheur : Quand le joueur touche la pièce Part (dans le dossier Folder).

Objets à créer dans Roblox Studio

Pour que le script fonctionne, il faut :

  1. Créer un dossier dans le Workspace :
    • Nom : Folder (le script attend ce dossier).
  2. Ajouter une pièce dans ce dossier :
    • Nom : Part (c’est la pièce qui déclenchera le changement de taille).
    • Type : BasePart (un cube, une sphère, etc.).

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")
        if not character then return end
	local humanoid = character:FindFirstChildOfClass("Humanoid")
	if humanoid then
		humanoid.BodyHeightScale.Value = 0.3
		humanoid.BodyWidthScale.Value = 0.3
		humanoid.BodyDepthScale.Value = 0.3
		humanoid.HeadScale.Value = 0.3
	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 Folder existe dans le Workspace.
    • Si le dossier n’existe pas encore, le script attend qu’il soit créé (au lieu de planter).
  • heightScaleFolder:WaitForChild("Part") :
    • Attend que la pièce Part existe dans le dossier Folder.

💡 Pourquoi WaitForChild ?

  • En Lua/Roblox, si un objet n’existe pas encore au moment où le script s’exécute, le jeu pourrait planter.
  • WaitForChild évite ce problème en attendant que l’objet soit créé.

2. Détecter quand un joueur touche la pièce

heightScale.Touched:Connect(function(hit)
  • heightScale.Touched :
    • C’est un événement qui se déclenche quand quelque chose touche la pièce Part.
  • hit :
    • C’est l’objet qui a touché la pièce (ex: la main, la tête ou le torse du joueur).

3. Récupérer le personnage du joueur

local character = hit:FindFirstAncestorOfClass("Model")
  • hit:FindFirstAncestorOfClass("Model") :
    • Cherche le premier ancêtre de hit qui est un Model.
    • En Roblox, un joueur est représenté par un Model (son personnage entier).
    • hit est une partie du corps (ex: Head, Torso), et son ancêtre est le modèle du joueur.

🔍 Exemple :
Si hit est la main du joueur (RightHand), alors :
RightHandRightArmTorsoCharacter (le Model).
La fonction trouve Character.

4. Récupérer l’Humanoid

local humanoid = character:FindFirstChildOfClass("Humanoid")
  • FindFirstChildOfClass("Humanoid") :
    • Cherche l’Humanoid dans le modèle du joueur.
    • L’Humanoid est le composant qui gère :
      • La vie du joueur.
      • Le mouvement (saut, course, etc.).
      • La taille (BodyHeightScale, BodyWidthScale, etc.).

5. Vérifier si l’Humanoid existe

if humanoid then
  • Pourquoi cette vérification ?
    • Si humanoid est nil (n’existe pas), le script ne fait rien (return implicite).
    • C’est une sécurité pour éviter les erreurs.

6. Modifier la taille du joueur

    humanoid.BodyHeightScale.Value = 0.3  -- Hauteur du corps = 30% de la normale.
    humanoid.BodyWidthScale.Value = 0.3   -- Largeur du corps = 30% de la normale.
    humanoid.BodyDepthScale.Value = 0.3  -- Profondeur du corps = 30% de la normale.
    humanoid.HeadScale.Value = 0.3         -- Taille de la tête = 30% de la normale.
  • BodyHeightScale : Contrôle la hauteur du corps.
  • BodyWidthScale : Contrôle la largeur du corps.
  • BodyDepthScale : Contrôle la profondeur (épaisseur) du corps.
  • HeadScale : Contrôle la taille de la tête.
  • 0.3 : Le joueur sera 30% de sa taille normale (donc très petit).

💡 Pour agrandir le joueur :

  • Remplace 0.3 par 2 pour doubler la taille.
  • Remplace 0.3 par 0.5 pour réduire de moitié.

QCM pour vérifier la compréhension

Questions sur le script « Changer la taille du joueur »

  1. Que fait workspace:WaitForChild("Folder") ?
    • A. Crée un dossier nommé Folder.
    • B. Attend que le dossier Folder existe dans le Workspace.
    • C. Supprime le dossier Folder.
    • D. Change le nom du dossier.
  2. Que représente hit dans heightScale.Touched:Connect(function(hit) ?
    • A. Le dossier Folder.
    • B. La partie du joueur qui a touché la pièce Part (ex: la main, la tête).
    • C. La pièce Part elle-même.
    • D. Le script Lua.
  3. À 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.
    • D. Change la taille de la pièce.
  4. Que fait humanoid.BodyHeightScale.Value = 0.3 ?
    • A. Réduit la hauteur du corps du joueur à 30% de sa taille normale.
    • B. Augmente la hauteur de saut.
    • C. Change la couleur du joueur.
    • D. Supprime l’Humanoid.
  5. Si on veut que le joueur devienne deux fois plus grand, que doit-on faire ?
    • A. Mettre BodyHeightScale.Value = 0.5.
    • B. Mettre BodyHeightScale.Value = 2.
    • C. Mettre BodyHeightScale.Value = 0.
    • D. Supprimer la ligne BodyHeightScale.
  6. Pourquoi utilise-t-on if humanoid then ?
    • A. Pour créer un Humanoid.
    • B. Pour éviter les erreurs si l’Humanoid n’existe pas.
    • C. Pour changer la taille de la pièce.
    • D. Pour désactiver le script.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *