Créer des objets en mouvement

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Objets en mouvement sont des objets qui se déplacent sur un ou plusieurs axes dans l'espace 3D. En utilisant la puissance intégrée du moteur de simulation de Roblox, vous pouvez faire en sorte que les objets se déplacent et interagissent avec leur environnement d'une manière qui imite le comportement physique du monde réel, familier et intuitif pour les joueurs, comme la gravité, l'aérodynamisme et la friction.

En utilisant le fichier Objets en Mouvement .rbxl comme référence, ce tutoriel explique comment les forces physiques impactent le mouvement linéaire dans Studio, et vous montre diverses techniques pour déplacer des objets du point A au point B dans vos jeux avec différents comportements de mouvement, y compris des conseils sur :

  • Utiliser une contrainte de déplacement LinearVelocity pour déplacer un ensemble entier à une vitesse linéaire constante.
  • Utiliser une PrismaticConstraint pour contraindre un ensemble à un seul axe et le déplacer à une vitesse linéaire constante par rapport à un point dans l'espace 3D.
  • Utiliser la méthode ApplyImpulse pour déplacer un ensemble avec une impulsion initiale de force afin que l'ensemble décélère lentement au fil du temps.

Mouvement linéaire et forces physiques

Roblox Studio est un moteur de simulation du monde réel qui imite le comportement physique en temps réel, donc pour prédire comment les objets se déplaçant linéairement peuvent se comporter dans les jeux, il est important d'avoir une compréhension générale de la façon dont les objets se déplacent dans la vie réelle avec un mouvement linéaire.

Mouvement linéaire est le mouvement le long d'un axe. Par exemple, lorsqu'un bloc a un mouvement linéaire, il se déplace le long d'un axe défini.

Un bloc gris devant un fond sombre. L'axe de mouvement est mis en évidence, et il fait face vers la gauche de l'écran pour signifier que le bloc va se déplacer le long de l'axe Y du monde.

Le mouvement linéaire ne peut exister sans des forces physiques externes poussant ou tirant les objets pour se déplacer. Selon la première loi du mouvement de Newton, les objets stationnaires restent stationnaires et les objets en mouvement restent en mouvement avec une vitesse constante à moins qu'ils ne soient soumis à une force externe. Par exemple, un bloc stationnaire reste stationnaire à moins qu'une force physique comme le vent ne le pousse à se déplacer.

Force est la mesure de la direction et de l'intensité d'une poussée ou d'un tirage physique qui provoque un changement de la vitesse linéaire des objets le long d'un axe. Un changement de vitesse est connu sous le nom d'accélération. Ce concept est particulièrement important pour que les objets se déplacent dans Studio ; plus vous appliquez de force aux objets, plus ils accélèrent rapidement.

C'est parce que la force doit être supérieure à toutes les forces physiques qui s'opposent à l'objet, telles que la gravité ou la friction. Par exemple, si vous deviez placer le bloc sur une plaque métallique, la force physique du vent doit surmonter la quantité de friction de la plaque métallique pour continuer à accélérer le bloc. Si la force du vent n'est pas beaucoup plus grande que la friction de la plaque métallique, le bloc accélère, mais plus lentement que dans l'exemple précédent.

Un bloc gris devant une plaque métallique grise foncée avec un diagramme qui signifie que le bloc aura une friction de plaque pour ralentir le mouvement du bloc à cause du vent.

Vitesse linéaire est la mesure du mouvement d'un objet, ou à quelle vitesse l'objet change de position le long d'un axe sur une période de temps. Studio mesure la vitesse linéaire en fonction du nombre de studs qu'un objet se déplace par seconde. Les studs sont les unités physiques principales de Roblox pour mesurer la longueur, et chaque stud équivaut à environ 28 cm dans le monde réel.

Un bloc gris devant la texture de grille 4x4 de la plaque de base par défaut. Un cube de stud unique est mis en évidence.

Comprendre la vitesse linéaire est important pour concevoir le gameplay car cela vous aide à déterminer combien de force vous avez besoin pour atteindre une vitesse particulière pour vos objets en mouvement. Par exemple, lorsque vous souhaitez propulser des objets vers le haut, il est important de considérer comment vous devez ajuster votre force pour surmonter la gravité dans l'environnement afin que les objets se déplacent avec précision.

Les sections suivantes approfondissent ces concepts alors que vous apprenez à déplacer des objets à une vitesse linéaire constante ou initiale avec la force nécessaire pour surmonter toutes les forces physiques opposées dans l'environnement. En examinant ces concepts physiques avec les techniques à venir, vous pourrez prédire plus précisément comment ajuster les valeurs des propriétés pour atteindre tout comportement de mouvement linéaire idéal dans Studio.

Maintenir une vitesse linéaire constante

Pour qu'un objet atteigne et maintienne une vitesse linéaire constante, il a besoin d'une force pour surmonter toutes les forces physiques opposées qui décélèrent la vitesse linéaire de l'objet ou qui empêchent l'objet de se déplacer. Par exemple, si vous voulez qu'un objet ait une vitesse linéaire de [0, 12, 0] dans Studio, vous avez besoin de suffisamment de force pour que l'objet atteigne et maintienne 12 studs par seconde le long de l'axe Y dans son environnement.

La quantité de force nécessaire dépend non seulement des forces physiques opposées dans l'environnement lui-même, telles que la gravité et la friction, mais aussi de l'objet lui-même. Par exemple, si vous avez deux objets de même forme se déplaçant sur le même axe, l'objet avec une plus grande masse nécessite plus de force pour atteindre la même accélération linéaire.

La petite pièce triangulaire a une petite masse, donc elle nécessite moins de force pour atteindre la même accélération.
La grande pièce triangulaire a une grande masse, donc elle nécessite plus de force pour atteindre la même accélération.

Les sous-sections suivantes utilisent des ensembles de différentes formes et tailles pour vous apprendre à déplacer soit un objet entier, soit seulement une partie de l'objet à une vitesse linéaire constante. En expérimentant avec différentes valeurs de propriétés, vous apprendrez à estimer la quantité maximale de force dont vous avez besoin pour les ensembles dans vos propres jeux.

Utiliser des contraintes LinearVelocity

Les objets LinearVelocity sont un type de contrainte de déplacement qui applique une force sur un ensemble entier pour maintenir une vitesse linéaire constante. En ne verrouillant pas la position de l'ensemble à un axe pendant son mouvement, l'ensemble est libre de tourner lorsqu'il entre en collision avec d'autres objets dans l'espace 3D. Ce type de mouvement conduit à des scénarios de jeu surprenants qui sont plus difficiles à prédire pour les joueurs.

Alors que les nénuphars entrent en collision les uns avec les autres, ils changent d'orientation mais continuent de flotter sur la rivière à une vitesse linéaire constante.

Pour commencer à déplacer l'ensemble, la contrainte LinearVelocity doit connaître :

  • Le point et la direction positive ou négative pour appliquer une force.
  • La quantité de studs que vous souhaitez que l'ensemble se déplace par seconde.
  • La quantité maximale de force que le moteur peut appliquer pour que l'ensemble atteigne la vitesse linéaire constante.

Pour démontrer ce processus, vous allez configurer un nénuphar avec un attachement auquel une contrainte LinearVelocity fait référence pour déplacer le nénuphar de 15 studs par seconde le long de l'axe X négatif du monde à une vitesse linéaire constante.

Une vue rapprochée d'un nénuphar. L'aide visuelle de la contrainte du nénuphar est visible, et elle pointe vers la droite, ce qui est l'axe X négatif du monde.

Ajouter un attachement

Vous pouvez spécifier le point pour appliquer la force en ajoutant un objet Attachment à l'ensemble, puis en configurant la position de l'attachement dans l'espace 3D. Le jeu d'exemple Objets en Mouvement place un attachement au centre du nénuphar afin que la contrainte puisse déplacer le maillage depuis l'attachement le long d'un axe particulier.

Les attachements incluent des aides visuelles pour vous aider à visualiser leurs axes de mouvement. La flèche jaune indique l'axe principal de l'attachement, et la flèche orange indique l'axe secondaire de l'attachement. Bien qu'aucun des axes de mouvement n'influence le mouvement du nénuphar dans les étapes de cette technique, il est important de comprendre ces aides visuelles pour référence future car elles peuvent vous aider à déterminer le comportement idéal pour différents types de contraintes, comme la PrismaticConstraint dans la technique suivante.

Les flèches d'aide visuelle d'un attachement. La flèche jaune qui signifie l'axe principal de l'attachement pointe vers le haut, et la flèche orange qui signifie l'axe secondaire de l'attachement pointe vers la droite.

Pour ajouter un attachement :

  1. Dans la fenêtre Explorer, développez le dossier LinearVelocityExample, puis développez son modèle enfant LilyPad_DIY.

  2. Insérez un attachement dans le maillage Pad.

    1. Survolez le maillage et cliquez sur le bouton ⊕. Un menu contextuel s'affiche.
    2. Dans le menu, insérez un Attachment. L'attachement s'affiche au centre de la pièce.
    3. Renommez l'attachement en MoveAttachment.
    Une vue rapprochée d'un nénuphar et de son aide visuelle d'attachement. L'axe principal pointe loin de la caméra, et l'axe secondaire pointe vers le haut.

Configurer la contrainte

Maintenant que votre maillage a un point fixe pour déplacer le nénuphar, vous pouvez configurer les propriétés d'une contrainte LinearVelocity pour spécifier la direction et l'intensité de la vitesse linéaire constante, la quantité de studs que vous souhaitez que le maillage se déplace par seconde, et la quantité maximale de force que le moteur peut appliquer pour que le maillage atteigne une vitesse linéaire constante.

Le jeu d'exemple Objets en Mouvement applique jusqu'à 5000 Rowtons de force constante pour déplacer le nénuphar de 15 studs par seconde le long de l'axe X négatif du monde à une vitesse linéaire constante. Les Rowtons sont les unités physiques principales de Roblox pour mesurer la force. Pour référencer les unités physiques de Roblox et comment elles se convertissent en unités métriques, voir Unités Roblox.

Pour configurer une contrainte LinearVelocity :

  1. Pour rendre la contrainte visible dans le viewport afin que vous puissiez référencer sa direction linéaire, activez Afficher les détails de la contrainte dans le menu Affichage de Studio.

  2. Insérez une contrainte LinearVelocity dans le maillage Pad.

    1. Dans la fenêtre Explorer, survolez le maillage, puis cliquez sur l'icône ⊕. Un menu contextuel s'affiche.
    2. Dans le menu contextuel, insérez LinearVelocity.
  3. Assignez l'attachement du maillage à la nouvelle contrainte.

    1. Dans la fenêtre Explorer, sélectionnez la contrainte.
    2. Dans la fenêtre Propriétés,
      1. Réglez Attachment0 sur MoveAttachment.
      2. Réglez MaxForce sur 5000 pour appliquer jusqu'à 5000 Rowtons de force constante afin d'atteindre la vitesse linéaire cible.
      3. Gardez RelativeTo sur World pour déplacer le nénuphar par rapport à la position et à l'orientation du monde.
      4. Réglez VelocityConstraint sur Line pour contraindre la force le long d'une ligne depuis l'attachement.
      5. Réglez LineDirection sur -1, 0, 0 pour déplacer le nénuphar le long de l'axe X négatif du monde. Notez que si vous deviez régler cette propriété sur 1, 0, 0, le nénuphar se déplacerait le long de l'axe X positif du monde.
      6. Réglez LineVelocity sur 15 pour déplacer le nénuphar de 15 studs par seconde.
    Une vue rapprochée d'un nénuphar et de sa flèche d'aide visuelle de contrainte qui pointe vers la droite, ou l'axe X négatif du monde.
  4. Vérifiez que la quantité de force que vous avez définie déplace le maillage de 15 studs par seconde le long de l'axe X négatif du monde.

    • Sélectionnez le mode de simulation Run dans le menu déroulant de la mezzanine et cliquez sur le bouton Play pour commencer. Studio simule le jeu à la position actuelle de la caméra sans votre avatar dans l'espace 3D.

      Option Run dans le menu déroulant des modes de test de la mezzanine de Studio.

Utiliser des contraintes PrismaticConstraint

Les objets PrismaticConstraint sont un type de contrainte mécanique qui créent un joint rigide entre deux attachements, permettant à leurs ensembles parents de se déplacer le long d'un axe les uns par rapport aux autres. En verrouillant la position des deux ensembles à un seul axe, chaque ensemble ne peut tourner que s'ils tournent ensemble dans la même direction.

Ce type de mouvement conduit à des scénarios de jeu stables qui sont plus faciles à prédire pour les joueurs. Par exemple, le jeu d'exemple Objets en Mouvement utilise des objets PrismaticConstraint pour déplacer des plateformes en bois que les joueurs peuvent utiliser pour traverser prudemment une grande rivière.

Lorsque vous définissez PrismaticConstraint.ActuatorType sur Motor, cette contrainte applique une force sur les deux attachements dans le but que les attachements atteignent et maintiennent une vitesse linéaire constante. Si vous ancrez l'un des ensembles parents des attachements, la force continue de déplacer l'ensemble non ancré à une vitesse linéaire constante tandis que l'ensemble ancré reste stationnaire.

Pour commencer à déplacer l'ensemble, la contrainte PrismaticConstraint doit connaître :

  • Le point et la direction positive ou négative pour appliquer une force.
  • La quantité de studs que vous souhaitez que les attachements se déplacent par seconde.
  • La quantité maximale de force que le moteur peut appliquer pour que les attachements et leurs ensembles parents atteignent une vitesse linéaire constante.

Pour démontrer ce processus, vous allez configurer un ensemble de bûches avec deux objets qui ont des attachements enfants auxquels une PrismaticConstraint fait référence pour déplacer la bûche de 40 studs par seconde le long de l'axe X négatif du monde à une vitesse linéaire constante.

Une vue rapprochée d'une bûche brune sur une rivière. L'aide visuelle de la contrainte de la bûche est visible et pointe vers la droite, ou l'axe X négatif du monde.

Configurer les attachements

Vous pouvez spécifier la direction pour déplacer un objet particulier dans un ensemble en ajoutant deux objets Attachment à l'ensemble, puis en configurant leur alignement et leur orientation dans l'espace 3D. Le jeu d'exemple Objets en Mouvement aligne deux attachements le long de l'axe X du monde près de la position où la bûche non ancrée chevauche la pièce ancrée, et oriente chaque axe principal de l'attachement pour faire face à l'axe X négatif du monde.

Lorsque vous configurez votre contrainte PrismaticConstraint dans la section suivante, elle déplacera la bûche par rapport à la pièce ancrée. En d'autres termes, la bûche se déplacera loin de la pièce stationnaire qui ne peut pas se déplacer car elle est ancrée dans l'espace 3D.

Pour configurer les attachements pour la contrainte prismatique :

  1. Dans la fenêtre Explorer, développez le dossier PrismaticConstraintExample, puis développez son modèle enfant Log_DIY.

  2. Insérez un attachement dans le maillage Log.

    1. Survolez le maillage et cliquez sur le bouton ⊕. Un menu contextuel s'affiche.
    2. Dans le menu, insérez un Attachment. L'attachement s'affiche au centre de la pièce.
    3. Renommez l'attachement en LogAttachment.
    Une vue rapprochée d'une bûche et de son aide visuelle d'attachement. L'axe principal pointe vers la caméra, et l'axe secondaire pointe vers le haut.
  3. En utilisant le même processus, insérez un attachement dans la pièce Anchor, puis renommez l'attachement AnchorAttachment.

    Une vue rapprochée d'une bûche et de deux aides visuelles d'attachement. L'axe principal de la nouvelle aide visuelle d'attachement pointe vers la droite, et l'axe secondaire pointe vers le haut.
  4. En utilisant l'outil View Selector comme référence pour les coordonnées du monde, faites pivoter LogAttachment et AnchorAttachment jusqu'à ce que chaque axe principal de l'attachement fasse face à l'axe X négatif du monde.

    Une vue rapprochée d'une bûche et de son aide visuelle d'attachement. Les deux attachements ont un axe principal qui pointe vers la droite, et un axe secondaire qui pointe vers le haut.
  5. Repositionnez AnchorAttachment afin que les deux attachements soient alignés sur l'axe X du monde.

    Une vue rapprochée d'une bûche et de ses aides visuelles d'attachement qui sont maintenant positionnées horizontalement. Les deux attachements ont un axe principal qui pointe vers la droite, et un axe secondaire qui pointe vers le haut.

Configurer la contrainte

Maintenant que vos attachements sont alignés sur le même axe et font face à la même direction que vous souhaitez que la bûche se déplace, vous pouvez configurer les propriétés d'une contrainte PrismaticConstraint pour spécifier s'il faut appliquer la vitesse linéaire constante cible dans la direction positive ou négative de chaque axe principal de l'attachement, la quantité de studs que vous souhaitez que les attachements se déplacent par seconde, et la quantité maximale de force que le moteur peut appliquer pour que la bûche atteigne une vitesse linéaire constante.

Bien que vous puissiez choisir différentes valeurs pour vos propres cas d'utilisation, le jeu d'exemple Objets en Mouvement applique jusqu'à 50000 Rowtons de force constante pour déplacer les attachements de 40 radians par seconde le long de l'axe X négatif du monde à une vitesse linéaire constante. Cependant, comme l'attachement d'ancrage se trouve dans un objet ancré, seul l'attachement de la bûche peut se déplacer.

Pour configurer une contrainte prismatique :

  1. Insérez un objet PrismaticConstraint dans le maillage Log.

    1. Dans la fenêtre Explorer, survolez le maillage, puis cliquez sur l'icône ⊕. Un menu contextuel s'affiche.
    2. Dans le menu contextuel, insérez une PrismaticConstraint.
  2. Assignez les attachements de la bûche à la nouvelle contrainte afin que la bûche se déplace en relation avec la pièce de bloc ancrée.

    1. Dans la fenêtre Explorer, sélectionnez la contrainte.
    2. Dans la fenêtre Propriétés,
      1. Réglez Attachment0 sur AnchorAttachment.
      2. Réglez Attachment1 sur LogAttachment. La contrainte s'affiche dans le viewport.
    Une vue rapprochée d'une bûche et de son aide visuelle de contrainte. Elle n'a pas d'aide visuelle de flèche car elle n'a pas encore de vitesse définie.
  3. Dans la fenêtre Explorer, sélectionnez la contrainte, puis dans la fenêtre Propriétés :

    1. Réglez ActuatorType sur Motor. De nouveaux champs de propriété s'affichent.
    2. Réglez MotorMaxForce sur 50000 pour appliquer jusqu'à 50000 Rowtons de force constante afin d'atteindre la vitesse linéaire cible.
    3. Réglez Velocity sur 40 pour déplacer la bûche de 40 studs par seconde.
    Une vue rapprochée d'une bûche et de son aide visuelle de contrainte qui pointe vers la droite, ou l'axe X négatif du monde.
  4. Vérifiez que la quantité de force que vous avez définie déplace la bûche de 40 studs par seconde le long de l'axe X négatif du monde.

    • Sélectionnez le mode de simulation Run dans le menu déroulant de la mezzanine et cliquez sur le bouton Play pour commencer. Studio simule le jeu à la position actuelle de la caméra sans votre avatar dans l'espace 3D.

      Option Run dans le menu déroulant des modes de test de la mezzanine de Studio.

Appliquer une force linéaire initiale

Une autre façon de changer la vitesse linéaire d'un objet est d'appliquer une impulsion de force. Après l'impulsion de force, l'objet décélère jusqu'à devenir stationnaire s'il y a une force opposée telle que la friction, ou reste en mouvement avec une vitesse linéaire constante s'il n'y a pas de forces opposées.

Cette technique est utile pour déplacer des objets après un événement de jeu significatif, tel qu'une explosion ou une collision impactante, car elle fournit un retour instantané aux joueurs. Pour démontrer, la sous-section suivante vous apprend à lancer le personnage d'un joueur vers le ciel lorsqu'il entre en collision avec un tapis de saut avec une impulsion initiale que vous pouvez adapter avec de nouvelles valeurs pour répondre à vos propres exigences de jeu.

Utiliser ApplyImpulse

La méthode ApplyImpulse applique une force sur un ensemble entier pour obtenir une vitesse linéaire initiale avant de ralentir jusqu'à s'arrêter lorsqu'il y a des forces opposées. Pour commencer à déplacer l'ensemble, la méthode doit connaître :

  • L'ensemble à déplacer.
  • L'axe sur lequel appliquer la force pour atteindre une vitesse linéaire initiale.
  • La quantité de force à appliquer à chaque axe.

Vous pouvez définir toutes ces valeurs dans un script. Par exemple, le script d'exemple définit l'ensemble à déplacer comme l'objet Humanoid du personnage du joueur, puis applique une impulsion de force de 2500 Rowton-secondes pour lancer le joueur vers le haut sur l'axe Y positif du monde. Notez que les personnages joueurs ont des masses différentes, donc vous devrez peut-être augmenter et équilibrer cette force pour lancer chaque joueur sans lancer les personnages joueurs avec des masses plus petites trop haut.

Pour déplacer un ensemble en utilisant ApplyImpulse :

  1. Dans la fenêtre Explorer, développez le dossier ApplyImpulseExample, puis développez son modèle enfant JumpPad_DIY.

  2. Insérez un script dans la pièce JumpPad.

    1. Survolez la pièce et cliquez sur le bouton ⊕. Un menu contextuel s'affiche.
    2. Dans le menu, insérez un Script. L'attachement s'affiche au centre de la pièce.
    3. Renommez le script en JumpScript.
  3. Remplacez le code par défaut par le code suivant :

    local volume = script.Parent
    local function onTouched(other)
    local impulse = Vector3.new(0, 2500, 0)
    local character = other.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and other.Name == "LeftFoot" then
    other:ApplyImpulse(impulse)
    end
    end
    volume.Touched:Connect(onTouched)
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.