Créer un part « SpeedPart » sous un folder « SpeedFolder »pour donner au joueur le pouvoir de courir plus vite :



Saisie sous un script sous ServerScriptService :
local speedFolder = workspace:waitForChild("SpeedFolder")
local speedPart = speedFolder:waitForChild("SpeedPart")
speedPart.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
if not character then return end
local humanoid = character:FindFirstChild("Humanoid")
if humanoid then
humanoid.WalkSpeed = 100
end
end)
Comment fonctionne ce script ?
Ce script Lua crée un bonus de vitesse : quand un joueur touche le part, il devient plus rapide.
1. Les variables : ranger des objets dans des « boîtes »
local speedFolder = workspace:waitForChild("SpeedFolder")
local speedPart = speedFolder:waitForChild("SpeedPart")
Une variable, c’est comme une boîte avec une étiquette, dans laquelle on range quelque chose pour s’en servir plus tard.
speedFolderest une variable qui contient le dossierSpeedFolder(un dossier rangé dans le jeu, leworkspace).speedPartest une variable qui contient la partieSpeedPart, qui se trouve à l’intérieur de ce dossier.
waitForChild("...") veut dire « attends que cet objet existe, puis récupère-le ». C’est plus sûr que d’aller le chercher directement, car parfois le jeu met un petit moment à charger tous les objets.
2. L’événement Touched : réagir à un contact
speedPart.Touched:Connect(function(hit)
Touched est un événement : c’est un signal qui se déclenche automatiquement dès qu’un objet touche speedPart. Un événement, c’est comme une sonnette : elle ne fait rien toute seule, mais dès qu’on appuie dessus, ça déclenche une action.
:Connect(function(hit) ... end) veut dire « quand la sonnette retentit, exécute cette fonction ». La fonction reçoit une information appelée hit, qui est l’objet qui a touché la partie (par exemple, un bras, une jambe, un accessoire du joueur).
3. Récupérer le joueur à partir de l’objet touché
lua
local character = hit:FindFirstAncestorOfClass("Model")
if not character then return end
Le problème, c’est que hit n’est pas le joueur en entier : c’est juste un petit morceau de son corps. Alors le script remonte « dans l’arbre » pour retrouver le personnage complet :
FindFirstAncestorOfClass("Model")veut dire « cherche parmi les parents de cet objet, le premier qui est unModel» (le personnage entier est unModel).if not character then return endveut dire « si on n’a rien trouvé, on arrête la fonction ici » (par sécurité, au cas où ce ne soit pas un joueur qui a touché la partie).
local humanoid = character:FindFirstChild("Humanoid")
if humanoid then
humanoid.WalkSpeed = 100
end
Chaque personnage contient un objet Humanoid, qui gère ses caractéristiques (vie, vitesse, etc.). Le script le récupère avec FindFirstChild("Humanoid"), puis change sa propriété WalkSpeed (vitesse de marche) à 100, ce qui rend le joueur beaucoup plus rapide que la normale (16 par défaut).
En résumé
Toucher la partie → l’événement se déclenche → le script retrouve le joueur → il augmente sa vitesse.
À quoi sert une variable comme ‘speedPart’ dans ce script ?
- Elle sert à créer une nouvelle partie dans le jeu
- Elle sert uniquement à afficher du texte à l’écran
- Elle supprime l’objet du jeu
- Elle sert à ranger et nommer un objet pour pouvoir le réutiliser facilement
Que représente l’événement ‘Touched’ ?
- Une variable qui stocke la vitesse du joueur
- Une commande qui affiche un message d’erreur
- Un signal qui se déclenche automatiquement quand un objet touche la partie
- Un minuteur qui se déclenche toutes les secondes
Que reçoit la fonction connectée à l’événement Touched (le paramètre ‘hit’) ?
- Le nom du joueur uniquement
- La vitesse actuelle du joueur
- L’objet exact qui est entré en contact avec la partiet
- Le dossier SpeedFolder
Pourquoi utilise-t-on ‘FindFirstAncestorOfClass(« Model »)’ sur ‘hit’ ?
- Pour changer la couleur du personnage
- Pour remonter jusqu’au personnage complet du joueur à partir du morceau touché
- Pour créer un nouveau personnage
- Pour supprimer l’objet touché
Que fait la ligne ‘humanoid.WalkSpeed = 100’ ?
- Elle augmente la vitesse de marche du personnage à 100
- Elle téléporte le joueur
- Elle donne 100 points de vie au joueur
- Elle supprime l’Humanoid
A toi de créer un nouveau part pour rendre la vitesse normal au joueur
