Objets en mouvement sont des objets qui se déplacent sur un ou plusieurs axes dans l'espace 3D. Grâce à 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 de manière à imiter un comportement physique du monde réel qui est familier et intuitif pour les joueurs, tel que la gravité, l'aérodynamisme et la friction.
En utilisant le fichier .rbxl de Moving Objects 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 d'un point A à un point B dans vos expériences avec différents comportements de mouvement, y compris des conseils sur :
- Utiliser une contrainte LinearVelocity pour déplacer un ensemble entier à une vitesse linéaire constante.
- Utiliser une PrismaticConstraint pour contraindre un ensemble à un unique 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 pouvoir prévoir comment les objets se déplaçant linéairement peuvent se comporter dans les expériences, il est important d'avoir une compréhension de haut niveau 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 déplacement 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 les faire bouger. Selon la première loi 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 cause aux objets de changer leur vitesse linéaire 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.
Ceci 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 lamount 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 d'études qu'un objet se déplace par seconde. Les études sont les unités physiques principales de Roblox pour mesurer la longueur, et chaque étude équivaut à environ 28 cm dans le monde réel.

Comprendre la vitesse linéaire est important pour concevoir le gameplay dans vos expériences 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 prendre en compte 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 comment 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 passant en revue ces concepts physiques avec les techniques à venir, vous pouvez 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 causent à l'objet de rester stationnaire. 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 études 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 qui se déplacent sur le même axe, l'objet ayant une masse plus grande nécessite plus de force pour atteindre la même accélération linéaire.
Les sous-sections suivantes utilisent des assemblages 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 assemblages dans vos propres expériences.
Utiliser les contraintes LinearVelocity
Les objets LinearVelocity sont un type de contrainte de moteur qui applique une force sur un ensemble entier pour maintenir une vitesse linéaire constante. En ne verrouillant pas la position de l'assemblage à un axe durant 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 permet des scénarios de gameplay surprenants qui sont plus difficiles à prédire pour les joueurs.
Pour commencer à déplacer l'assemblage, la contrainte LinearVelocity doit connaître :
- Le point et la direction positive ou négative pour appliquer une force.
- La quantité d'études que vous souhaitez que l'assemblage se déplace par seconde.
- La quantité maximale de force que le moteur peut appliquer pour que l'assemblage atteigne la vitesse linéaire constante.
Pour démontrer ce processus, vous allez configurer un nénuphar avec une attache que la contrainte LinearVelocity référence pour déplacer le nénuphar de 15 études par seconde le long de l'axe négatif X du monde à une vitesse linéaire constante.

Ajouter une attache
Vous pouvez spécifier le point où appliquer la force en ajoutant un objet Attachment à l'assemblage, puis en configurant la position de l'attache dans l'espace 3D. L'expérience échantillon Moving Objects place une attache au centre du nénuphar afin que la contrainte puisse déplacer le maillage depuis l'attache le long d'un axe particulier.
Les attaches incluent des aides visuelles pour vous aider à visualiser leurs axes de mouvement. La flèche jaune représente l'axe principal de l'attache, et la flèche orange représente l'axe secondaire de l'attache. 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 une attache :
Dans la fenêtre Explorer, développez le dossier LinearVelocityExample, puis développez son enfant LilyPad_DIY modèle.
Insérez une attache dans le maillage Pad.
- Survolez le maillage et cliquez sur le bouton ⊕. Un menu contextuel s'affiche.
- Dans le menu, insérez une Attachment. L'attache est affichée au centre de la pièce.
- Renommez l'attache 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 de la contrainte LinearVelocity pour spécifier la direction et l'intensité pour la vitesse linéaire constante, la quantité d'études 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.
L'expérience d'échantillon Moving Objects applique jusqu'à 5000 Rowtons de force constante pour déplacer le nénuphar à 15 études par seconde le long de l'axe négatif X du monde à une vitesse linéaire constante. Les Rowtons sont les unités physiques principales de Roblox pour mesurer la force. Pour faire référence aux 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 Show Constraint Details dans le menu View 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'attache du maillage à la nouvelle contrainte.
- Dans la fenêtre Explorer, sélectionnez la contrainte.
- Dans la fenêtre Properties,
- Définissez Attachment0 sur MoveAttachment.
- Définissez MaxForce à 5000 pour appliquer jusqu'à 5000 Rowtons de force constante afin d'atteindre la vitesse linéaire prévue.
- Gardez RelativeTo sur World pour déplacer le nénuphar par rapport à la position et l'orientation du monde.
- Définissez VelocityConstraint sur Line pour contraindre la force le long d'une ligne depuis l'attache.
- Définissez LineDirection sur -1, 0, 0 pour déplacer le nénuphar le long de l'axe négatif X du monde. Notez que si vous deviez définir cette propriété sur 1, 0, 0, le nénuphar se déplacerait le long de l'axe positif X du monde.
- Définissez LineVelocity sur 15 pour déplacer le nénuphar à 15 études par seconde.

Vérifiez que la quantité de force que vous avez définie déplace le maillage à 15 études par seconde le long de l'axe négatif X 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 l'expérience à la position de caméra actuelle sans votre avatar dans l'espace 3D.

Utiliser des contraintes PrismaticConstraint
Les objets PrismaticConstraint sont un type de contrainte mécanique qui créent une jointure rigide entre deux attaches, permettant à leurs assemblages parents de se déplacer le long d'un axe l'un par rapport à l'autre. En verrouillant la position des deux assemblages sur un même axe, chaque assemblage ne peut tourner que s'ils tournent ensemble dans la même direction.
Ce type de mouvement entraîne des scénarios de gameplay stables qui sont plus faciles à prédire pour les joueurs. Par exemple, l'expérience échantillon Moving Objects utilise des objets PrismaticConstraint pour déplacer des plateformes en rondins que les joueurs peuvent utiliser pour traverser prudemment une rivière géante.
Lorsque vous réglez PrismaticConstraint.ActuatorType sur Motor, cette contrainte applique une force sur les deux attaches dans le but que les attaches atteignent et maintiennent une vitesse linéaire constante. Si vous ancrez l'un des assemblages parents des attaches, la force continue de déplacer l'assemblage non ancré à une vitesse linéaire constante tandis que l'assemblage ancré reste stationnaire.
Pour commencer à déplacer l'assemblage, la contrainte PrismaticConstraint doit connaître :
- Le point et la direction positive ou négative pour appliquer une force.
- La quantité d'études que vous souhaitez que les attaches se déplacent par seconde.
- La quantité maximale de force que le moteur peut appliquer pour que les attaches et leurs assemblages parents atteignent une vitesse linéaire constante.
Pour démontrer ce processus, vous allez configurer un assemblage de bûches avec deux objets qui possèdent des attaches enfants que PrismaticConstraint référence pour déplacer la bûche à 40 études par seconde le long de l'axe négatif X du monde à une vitesse linéaire constante.

Configurer les attaches
Vous pouvez spécifier la direction pour déplacer un objet particulier dans un assemblage en ajoutant deux objets Attachment à l'assemblage, puis en configurant leur alignement et leur orientation dans l'espace 3D. L'expérience d'échantillon Moving Objects aligne deux attaches le long de l'axe X du monde près de la position où la bûche non ancrée se chevauche avec la pièce ancrée, et oriente chaque axe principal de l'attache pour faire face à l'axe négatif X du monde.
Lorsque vous configurerez votre contrainte PrismaticConstraint dans la section suivante, elle déplacera la bûche par rapport à la pièce d'ancrage. En d'autres termes, la bûche se déplacera loin de la pièce stationnaire qui ne peut pas se déplacer puisqu'elle est ancrée dans l'espace 3D.
Pour configurer des attaches pour la contrainte prismatique :
Dans la fenêtre Explorer, développez le dossier PrismaticConstraintExample, puis développez son enfant Log_DIY modèle.
Insérez une attache dans le maillage Log.
- Survolez le maillage et cliquez sur le bouton ⊕. Un menu contextuel s'affiche.
- Dans le menu, insérez une Attachment. L'attache est affichée au centre de la pièce.
- Renommez l'attache en LogAttachment.

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

Utilisez l'outil View Selector comme référence pour les coordonnées du monde, faites pivoter LogAttachment et AnchorAttachment jusqu'à ce que l'axe principal de chaque attache fasse face à l'axe négatif X du monde.

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

Configurer la contrainte
Maintenant que vos attaches sont alignées 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 si vous souhaitez appliquer la vitesse linéaire constante cible dans la direction positive ou négative de l'axe principal de chaque attache, la quantité d'études que vous souhaitez que les attaches 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, l'expérience d'échantillon Moving Objects applique jusqu'à 50000 Rowtons de force constante pour déplacer les attaches à 40 radians par seconde le long de l'axe négatif X du monde à une vitesse linéaire constante. Cependant, parce que l'attache d'ancrage se trouve dans un objet ancré, seule l'attache 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 attaches de la bûche à la nouvelle contrainte afin que la bûche se déplace en relation à la pièce bloquée ancrée.
- Dans la fenêtre Explorer, sélectionnez la contrainte.
- Dans la fenêtre Properties,
- Définissez Attachment0 sur AnchorAttachment.
- Définissez Attachment1 sur LogAttachment. La contrainte s'affiche dans le viewport.

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

Vérifiez que la quantité de force que vous avez définie déplace la bûche à 40 études par seconde le long de l'axe négatif X 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 l'expérience à la position de caméra actuelle 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 soit jusqu'à devenir stationnaire si une force d'opposition telle que la friction est présente, soit reste en mouvement avec une vitesse linéaire constante s'il n'y a pas de forces d'opposition.
Cette technique est utile pour déplacer des objets après un événement de jeu significatif, tel qu'une explosion ou une collision d'impact, car elle fournit aux joueurs un retour instantané. 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 tremplin 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'à un arrêt lorsqu'il y a des forces opposées. Pour commencer à déplacer l'assemblage, la méthode doit connaître :
- L'assemblage à 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'échantillon définit l'assemblage à déplacer comme l'objet Humanoid du personnage du joueur, puis il applique une impulsion de force de 2500 Rowton-secondes pour lancer le joueur vers le haut le long de l'axe Y positif du monde. Notez que les personnages des joueurs ont des masses différentes, donc vous devrez peut-être augmenter et équilibrer cette force pour lancer chaque joueur sans propulser les personnages des joueurs ayant moins de masse trop haut.
Pour déplacer un assemblage en utilisant ApplyImpulse :
Dans la fenêtre Explorer, développez le dossier ApplyImpulseExample, puis développez son enfant JumpPad_DIY modèle.
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)