Catégories
Jeu vidéo ROBLOX ROBLOX-NIVEAU01

Déplacer une Part

Apprendre à déplacer une Part dans Roblox en utilisant les propriétés Position et Orientation. Ce tutoriel explique :

  1. Comment accéder à une Part dans le Workspace.
  2. Comment déplacer une Part en modifiant sa Position.
  3. Comment faire tourner une Part en modifiant son Orientation.
  4. Comment utiliser task.wait() pour créer des délais entre les mouvements.

Introduction : Pourquoi déplacer une Part ?

Dans Roblox, les Part sont les éléments de base pour construire des objets. Savoir les déplacer et les faire tourner permet de :

  • Créer des animations (ex: une porte qui s’ouvre, un ascenseur qui monte).
  • Simuler des mouvements (ex: un objet qui se déplace automatiquement).
  • Contrôler des éléments du jeu (ex: une plateforme qui bouge).

Dans ce tutoriel, on va déplacer une Part dans différentes directions et la faire tourner autour des axes X, Y et Z.

Préparation dans Roblox Studio

Pour tester ce script, suis ces étapes :

  1. Créer un dossier pour les mouvements :
    • Dans Workspace, crée un dossier nommé MovementsFolder.
  2. Ajouter une Part :
    • Ajoute une Part dans MovementsFolder.
    • Nomme-la Part (ou modifie le nom dans le script).
  3. Ajouter le script :
    • Crée un Script dans ServerScriptService et copie-y le code fourni.
  4. Lancer le jeu :
    • Observe la Part :
      • Après 5 secondes, elle commence à se déplacer.
      • Elle se déplace sur les axes X, Y et Z, puis tourne autour des axes X, Y et Z.

Voici le script commenté sous ServerScriptService :

-- Récupérer le dossier "MovementsFolder" dans le Workspace
local movementsFolder = workspace:WaitForChild("MovementsFolder")

-- Récupérer la Part à déplacer dans le dossier
local movingPart = movementsFolder:WaitForChild("Part")

-- Empêcher la Part de bouger à cause des collisions ou de la gravité
movingPart.Anchored = true

-- Attendre 5 secondes avant de commencer les mouvements
task.wait(5)

-- Déplacer la Part de +50 unités sur l'axe X (droite)
movingPart.Position += Vector3.new(50, 0, 0)
task.wait(1)  -- Attendre 1 seconde

-- Déplacer la Part de -50 unités sur l'axe X (gauche, retourne à la position initiale)
movingPart.Position += Vector3.new(-50, 0, 0)
task.wait(1)

-- Déplacer la Part de +50 unités sur l'axe Z (avant)
movingPart.Position += Vector3.new(0, 0, 50)
task.wait(1)

-- Déplacer la Part de -50 unités sur l'axe Z (arrière, retourne à la position initiale)
movingPart.Position += Vector3.new(0, 0, -50)
task.wait(1)

-- Déplacer la Part de +50 unités sur l'axe Y (haut)
movingPart.Position += Vector3.new(0, 50, 0)
task.wait(1)

-- Déplacer la Part de -50 unités sur l'axe Y (bas, retourne à la position initiale)
movingPart.Position += Vector3.new(0, -50, 0)
task.wait(1)

-- Faire tourner la Part de +10 degrés autour de l'axe Y (rotation vers la droite)
movingPart.Orientation += Vector3.new(0, 10, 0)
task.wait(1)

-- Faire tourner la Part de -10 degrés autour de l'axe Y (rotation vers la gauche, retourne à l'orientation initiale)
movingPart.Orientation += Vector3.new(0, -10, 0)
task.wait(1)

-- Faire tourner la Part de +10 degrés autour de l'axe Z (rotation vers le haut)
movingPart.Orientation += Vector3.new(0, 0, 10)
task.wait(1)

-- Faire tourner la Part de -10 degrés autour de l'axe Z (rotation vers le bas, retourne à l'orientation initiale)
movingPart.Orientation += Vector3.new(0, 0, -10)
task.wait(1)

-- Faire tourner la Part de +10 degrés autour de l'axe X (rotation vers l'avant)
movingPart.Orientation += Vector3.new(10, 0, 0)
task.wait(1)

-- Faire tourner la Part de -10 degrés autour de l'axe X (rotation vers l'arrière, retourne à l'orientation initiale)
movingPart.Orientation += Vector3.new(-10, 0, 0)

Explications Détaillées

1. Accéder à une Part dans le Workspace

local movementsFolder = workspace:WaitForChild("MovementsFolder")
local movingPart = movementsFolder:WaitForChild("Part")
  • workspace:WaitForChild("MovementsFolder") :
    • Attend que le dossier MovementsFolder existe dans le Workspace.
    • Si le dossier n’existe pas encore, le script attend qu’il soit créé.
  • movementsFolder:WaitForChild("Part") :
    • Attend que la Part existe dans le dossier MovementsFolder.
    • Si la Part n’existe pas encore, le script attend qu’elle soit créée.
  • Pourquoi utiliser WaitForChild ?
    • Cela évite les erreurs si le dossier ou la Part ne sont pas encore chargés quand le script s’exécute.

2. Empêcher la Part de bouger (Anchored)

movingPart.Anchored = true
  • Anchored = true :
    • Empêche la Part de bouger à cause de la gravité ou des collisions.
    • Sans cela, la Part tomberait ou serait poussée par d’autres objets.
  • Pourquoi est-ce important ?
    • Si Anchored = false, la Part serait soumise à la physique (gravité, collisions), ce qui rendrait les mouvements imprévisibles.

3. Déplacer une Part avec Position

movingPart.Position += Vector3.new(50, 0, 0)
  • Position :
    • Propriété qui stocke la position de la Part dans l’espace 3D (coordonnées X, Y, Z).
    • Exemple : Vector3.new(50, 0, 0) signifie 50 unités sur l’axe X, 0 sur Y, 0 sur Z.
  • += :
    • Ajoute un Vector3 à la position actuelle.
    • Exemple : Si movingPart.Position = Vector3.new(0, 0, 0), alors après += Vector3.new(50, 0, 0), la nouvelle position sera Vector3.new(50, 0, 0).
  • Axes dans Roblox : Axe Direction Exemple de mouvement X Gauche/Droite Vector3.new(50, 0, 0) → Déplacement vers la droite Y Haut/Bas Vector3.new(0, 50, 0) → Déplacement vers le haut Z Avant/Arrière Vector3.new(0, 0, 50) → Déplacement vers l’avant

4. Faire tourner une Part avec Orientation

movingPart.Orientation += Vector3.new(0, 10, 0)
  • Orientation :
    • Propriété qui stocke la rotation de la Part autour des axes X, Y et Z (en degrés).
    • Exemple : Vector3.new(0, 10, 0) signifie 10 degrés autour de l’axe Y.
  • += :
    • Ajoute une rotation à l’orientation actuelle.
    • Exemple : Si movingPart.Orientation = Vector3.new(0, 0, 0), alors après += Vector3.new(0, 10, 0), la nouvelle orientation sera Vector3.new(0, 10, 0).
  • Axes de rotation : Axe Rotation Exemple X Inclinaison avant/arrière Vector3.new(10, 0, 0) → Rotation vers l’avant Y Rotation gauche/droite Vector3.new(0, 10, 0) → Rotation vers la droite Z Rotation autour de l’axe vertical Vector3.new(0, 0, 10) → Rotation dans le sens horaire

5. Créer des délais avec task.wait()

task.wait(5)  -- Attendre 5 secondes
  • task.wait(durée) :
    • Pause l’exécution du script pendant durée secondes.
    • Exemple : task.wait(1) attend 1 seconde avant de continuer.
  • Pourquoi utiliser task.wait() ?
    • Pour espacer les mouvements et les rendre visibles.
    • Sans délai, les mouvements seraient trop rapides pour être vus.

QCM : Teste ta compréhension !

Sur l’accès aux objets :

  1. Que fait workspace:WaitForChild("MovementsFolder") ?
    • a) Attend que le dossier MovementsFolder existe dans le Workspace.
    • b) Crée un nouveau dossier.
    • c) Supprime le dossier.
  1. Pourquoi utilise-t-on WaitForChild ?
    • a) Pour éviter les erreurs si l’objet n’existe pas encore.
    • b) Pour accélérer le script.
    • c) Pour changer la couleur de la Part.

Sur le déplacement :

  1. Que fait movingPart.Position += Vector3.new(50, 0, 0) ?
    • a) Déplace la Part de 50 unités vers la droite (axe X).
    • b) Déplace la Part de 50 unités vers le haut (axe Y).
    • c) Déplace la Part de 50 unités vers l’avant (axe Z).
  1. Que fait Vector3.new(0, 50, 0) ?
    • a) Crée un vecteur pour déplacer la Part de 50 unités vers le haut.
    • b) Crée un vecteur pour faire tourner la Part.
    • c) Crée un vecteur pour changer la couleur de la Part.
  1. Pourquoi utilise-t-on Anchored = true ?
    • a) Pour empêcher la Part de bouger à cause de la gravité ou des collisions.
    • b) Pour rendre la Part invisible.
    • c) Pour supprimer la Part.

Sur la rotation :

  1. Que fait movingPart.Orientation += Vector3.new(0, 10, 0) ?
    • a) Fait tourner la Part de 10 degrés autour de l’axe Y (droite/gauche).
    • b) Fait tourner la Part de 10 degrés autour de l’axe X (avant/arrière).
    • c) Fait tourner la Part de 10 degrés autour de l’axe Z (sens horaire/anti-horaire).
  1. Que fait Vector3.new(10, 0, 0) pour l’orientation ?
    • a) Fait tourner la Part de 10 degrés autour de l’axe X (avant/arrière).
    • b) Fait tourner la Part de 10 degrés autour de l’axe Y (droite/gauche).
    • c) Fait tourner la Part de 10 degrés autour de l’axe Z.

Sur les délais :

  1. À quoi sert task.wait(5) ?
    • a) Attendre 5 secondes avant de continuer le script.
    • b) Accélérer le script.
    • c) Supprimer la Part.
  1. Pourquoi utilise-t-on task.wait(1) entre chaque mouvement ?
    • a) Pour espacer les mouvements et les rendre visibles.
    • b) Pour économiser de la mémoire.
    • c) Pour changer la couleur de la Part.