ROBLOX - initiation LUA
Roblox Lua – Créer un sol et des blocs piégés qui tombent
Un script complet pour créer un sol géant et des blocs qui
tombent du ciel, détruits au contact du joueur.
Idéal pour découvrir Instance.new, Vector3, boucles et
événements Touched.
Public : 11 → 18 ans
Bon tremplin vers la prog 3D / moteurs de jeu
1) Ce que fait le script
Le script d’origine est composé de plusieurs parties :
- Création d’un bloc simple (pour découvrir
Instance.new("Part")). - Création d’un grand sol blanc ancré, pour que tout tombe dessus.
- Une fonction
makePart()qui crée des cubes de 5×5×5, qui tombent. - Un événement
Touchedqui détecte la collision avec unHumanoid(le personnage Roblox). - Une boucle infinie
while true doqui génère un nouveau bloc régulièrement.
Dans cette version “cours”, on va :
- Nettoyer et mieux organiser le code.
- Ajouter des commentaires clairs.
- Expliquer chaque idée pour que même un débutant en Roblox Studio puisse suivre.
2) Script complet, organisé et commenté
Voici une version réorganisée du script, avec des noms plus clairs et quelques améliorations mineures (par exemple, position de spawn aléatoire). Tu peux coller ce script dans un Script placé dans ServerScriptService dans Roblox Studio.
--[[
Script Roblox : sol + blocs piégés qui tombent
- Crée un grand sol blanc
- Fait tomber des blocs noirs / blancs
- Quand un bloc touche un Humanoid, il est détruit
]]
-------------------------------
-- 1. Création du sol
-------------------------------
local ground = Instance.new("Part")
ground.Name = "Ground"
-- Taille : X, Y, Z (en studs)
ground.Size = Vector3.new(1000, 1, 1000)
-- Position au centre (0,0,0)
ground.Position = Vector3.new(0, 0, 0)
-- Le sol ne doit pas bouger : on l'ancre
ground.Anchored = true
-- Couleur blanche (R,G,B entre 0 et 1)
ground.Color = Color3.new(1, 1, 1)
-- On le place dans l'espace de jeu (Workspace)
ground.Parent = workspace
-------------------------------
-- 2. Variables globales
-------------------------------
-- Compteur de blocs créés (pour alterner les couleurs)
local count = 0
-------------------------------
-- 3. Fonction qui crée un bloc
-------------------------------
local function makePart()
-- Position aléatoire sur X/Z pour que les blocs ne tombent pas tous au même endroit
local randX = math.random(-50, 50)
local randZ = math.random(-50, 50)
-- Création d'un nouveau bloc
local part = Instance.new("Part")
part.Name = "FallingBlock"
part.Size = Vector3.new(5, 5, 5)
-- On place le bloc en hauteur (Y = 20) au-dessus du sol
part.Position = Vector3.new(randX, 20, randZ)
-- On le laisse tomber (pas ancré)
part.Anchored = false
-- On le met dans l'espace de jeu
part.Parent = workspace
-- Couleur alternée : un coup noir, un coup blanc
if count % 2 == 0 then
part.Color = Color3.new(0, 0, 0) -- noir
else
part.Color = Color3.new(1, 1, 1) -- blanc
end
-- Quand le bloc touche quelque chose
part.Touched:Connect(function(hit)
-- On cherche un Humanoid dans l'objet touché (personnage)
local humanoid = hit.Parent:FindFirstChild("Humanoid")
if humanoid ~= nil then
-- Si tu veux vraiment KO le joueur :
-- humanoid.Health = 0
print("YOU DIE !!") -- message côté serveur
part:Destroy() -- on supprime le bloc après le contact
end
end)
-- On incrémente le compteur
count = count + 1
end
-------------------------------
-- 4. Boucle principale
-------------------------------
while true do
-- Crée un nouveau bloc
makePart()
-- Attendre 1 seconde avant de créer le suivant
task.wait(1)
end
task.wait ne fonctionne pas dans ta version,
tu peux utiliser wait(1), mais task.wait() est plus moderne
et plus précis.
3) Décryptage étape par étape
a) Instance.new("Part") : fabriquer un bloc
Instance.new("Part") crée un nouvel objet 3D dans le jeu.
C’est comme “ajouter un cube” par script au lieu de le placer à la main.
Size→ la taille du bloc en X, Y, Z.Position→ sa position dans l’espace 3D.Anchored=true→ l’objet ne bouge pas (pas de gravité).Anchored=false→ l’objet tombe, glisse, etc.Parent = workspace→ le bloc est vraiment ajouté dans la scène.
b) Le sol : un énorme Part ancré
Le “sol” n’est rien d’autre qu’un Part très plat, très large,
ancré, et placé en (0,0,0). Tous les blocs qui tombent finissent dessus.
c) La fonction makePart()
makePart() est une fonction (comme un “bloc personnalisé” en Scratch)
qui s’occupe de tout le travail de création d’un bloc :
- Choisir une position aléatoire.
- Créer le bloc, lui donner sa taille, sa couleur, sa position.
- Connecter l’événement
Touched. - Incrémenter le compteur
count.
d) L’événement Touched
Quand le bloc touche quelque chose, Roblox appelle la fonction passée à
:Connect(function(hit) ... end).
On regarde alors si ce qu’on a touché contient un Humanoid :
- Si oui → c’est probablement un personnage.
- On peut alors modifier sa vie, afficher un message, détruire le bloc, etc.
e) La boucle while true do
La dernière partie :
while true do
makePart()
task.wait(1)
end
signifie : pour toujours, on crée un bloc, on attend 1 seconde, on recommence. C’est ce qui donne l’effet de “pluie” de blocs.
QCM – As-tu bien compris ce script Roblox ?
Coche une réponse par question, puis clique sur “Vérifier mes réponses”.
Idées d’exercices / variantes
- Niveau 1 : changer la taille des blocs, leur couleur, la fréquence de spawn.
- Niveau 2 : faire apparaître les blocs seulement au-dessus d’une zone précise.
- Niveau 3 : ajouter un compteur de “blocs évités” ou “blocs détruits”.
- Niveau avancé : créer plusieurs types de blocs : certains ralentissent le joueur, d’autres le repoussent, etc.
Commentaires
Enregistrer un commentaire