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.

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.

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.

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.
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.
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.

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.

Pour ajouter un attachement :
Dans la fenêtre Explorer, développez le dossier LinearVelocityExample, puis développez son modèle enfant LilyPad_DIY.
Insérez un attachement dans le maillage Pad.
- Survolez le maillage et cliquez sur le bouton ⊕. Un menu contextuel s'affiche.
- Dans le menu, insérez un Attachment. L'attachement s'affiche au centre de la pièce.
- Renommez l'attachement en MoveAttachment.

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 :
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.
Insérez une contrainte LinearVelocity dans le maillage Pad.
- Dans la fenêtre Explorer, survolez le maillage, puis cliquez sur l'icône ⊕. Un menu contextuel s'affiche.
- Dans le menu contextuel, insérez LinearVelocity.
Assignez l'attachement du maillage à la nouvelle contrainte.
- Dans la fenêtre Explorer, sélectionnez la contrainte.
- Dans la fenêtre Propriétés,
- Réglez Attachment0 sur MoveAttachment.
- Réglez MaxForce sur 5000 pour appliquer jusqu'à 5000 Rowtons de force constante afin d'atteindre la vitesse linéaire cible.
- Gardez RelativeTo sur World pour déplacer le nénuphar par rapport à la position et à l'orientation du monde.
- Réglez VelocityConstraint sur Line pour contraindre la force le long d'une ligne depuis l'attachement.
- 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.
- Réglez LineVelocity sur 15 pour déplacer le nénuphar de 15 studs par seconde.

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.

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.

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 :
Dans la fenêtre Explorer, développez le dossier PrismaticConstraintExample, puis développez son modèle enfant Log_DIY.
Insérez un attachement dans le maillage Log.
- Survolez le maillage et cliquez sur le bouton ⊕. Un menu contextuel s'affiche.
- Dans le menu, insérez un Attachment. L'attachement s'affiche au centre de la pièce.
- Renommez l'attachement en LogAttachment.

En utilisant le même processus, insérez un attachement dans la pièce Anchor, puis renommez l'attachement AnchorAttachment.

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.

Repositionnez AnchorAttachment afin que les deux attachements soient alignés sur l'axe X du monde.

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 :
Insérez un objet PrismaticConstraint dans le maillage Log.
- Dans la fenêtre Explorer, survolez le maillage, puis cliquez sur l'icône ⊕. Un menu contextuel s'affiche.
- Dans le menu contextuel, insérez une PrismaticConstraint.
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.
- Dans la fenêtre Explorer, sélectionnez la contrainte.
- Dans la fenêtre Propriétés,
- Réglez Attachment0 sur AnchorAttachment.
- Réglez Attachment1 sur LogAttachment. La contrainte s'affiche dans le viewport.

Dans la fenêtre Explorer, sélectionnez la contrainte, puis dans la fenêtre Propriétés :
- Réglez ActuatorType sur Motor. De nouveaux champs de propriété s'affichent.
- Réglez MotorMaxForce sur 50000 pour appliquer jusqu'à 50000 Rowtons de force constante afin d'atteindre la vitesse linéaire cible.
- Réglez Velocity sur 40 pour déplacer la bûche de 40 studs par seconde.

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.

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 :
Dans la fenêtre Explorer, développez le dossier ApplyImpulseExample, puis développez son modèle enfant JumpPad_DIY.
Insérez un script dans la pièce JumpPad.
- Survolez la pièce et cliquez sur le bouton ⊕. Un menu contextuel s'affiche.
- Dans le menu, insérez un Script. L'attachement s'affiche au centre de la pièce.
- Renommez le script en JumpScript.
Remplacez le code par défaut par le code suivant :
local volume = script.Parentlocal function onTouched(other)local impulse = Vector3.new(0, 2500, 0)local character = other.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and other.Name == "LeftFoot" thenother:ApplyImpulse(impulse)endendvolume.Touched:Connect(onTouched)