Le moteur physique comprend les Constraints suivantes qui appliquent une force ou un couple pour déplacer un ou plusieurs assemblages. De plus, diverses contraintes mécaniques sont disponibles, qui se comportent comme des connexions mécaniques conceptuelles, y compris des charnières, des ressorts, des cordes et plus encore.
Visualisation des contraintes
Pour visualiser précisément les contraintes dans Studio, vous pouvez activer les éléments suivants depuis le menu Affichage ou via le raccourci respectif :
- Afficher les soudures (AltW ou ⌥W) — Afficher WeldConstraints séparément de la visualisation des autres contraintes.
- Afficher les détails des contraintes (AltD ou ⌥D) — Afficher les détails visuels complets des contraintes non-soudées.
Créer des contraintes
Les contraintes de mouvement connectent généralement un ou deux Attachments ou Bones. Lorsqu'elles sont connectées à des Bones, la contrainte utilisera leur position et orientation animées.
Pour créer une contrainte mécanique, vous pouvez soit en insérer une depuis le sélecteur/bouton Contrainte, soit à travers la fenêtre Explorer.
Dans la barre d'outils de l'onglet Modèle de Studio, cliquez et maintenez enfoncé sur la petite flèche de coin sur un bouton de contrainte pour ouvrir son menu de sélection, puis sélectionnez la contrainte souhaitée.

Dans la vue 3D, survolez n'importe quelle Part ou MeshPart et cliquez pour ajouter un nouvel Attachment à la pièce au point visualisé. Alternativement, survolez et cliquez sur un Attachment ou Bone existant pour l'utiliser pour la contrainte.
Certaines contraintes de mouvement utilisent ou prennent en charge un attachement secondaire dans leur fonctionnalité, de sorte que l'outil pourrait vous inviter à répéter l'étape précédente sur un autre Part, MeshPart, ou Attachment, ou Bone.

AngularVelocity utilisant un attachement 
AlignPosition utilisant deux attachements
Simulation physique
Pour simuler la physique tandis que vous déplacez ou faites tourner des pièces, vous pouvez passer du mode Géométrique au mode Physique dans la barre d'outils de Studio, forçant ainsi les pièces à obéir aux limitations physiques. Par exemple, si deux pièces sont attachées par un RopeConstraint et que vous faites glisser une pièce dans la scène, l'autre pièce suivra alors que la corde se tend.

Conversion de mouvement héritée
Si votre jeu repose sur d'anciennes contraintes basées sur BodyMover, examinez les notes suivantes lors de la conversion aux contraintes de mouvement modernes.
AlignPosition satisfait la majorité des cas d'utilisation couverts par l'ancien moteur BodyPosition. Pour synchroniser avec la manière dont l'ancien moteur traitait chaque composant indépendamment et permettait une force différente le long de chaque dimension, la propriété ForceLimitMode de AlignPosition permet à la contrainte de fonctionner en mode Magnitude ou PerAxis :
En mode PerAxis, la force le long de chaque axe peut être spécifiée indépendamment. Étant donné que la force maximale est spécifiée comme un vecteur, le référentiel de la force peut également être spécifié par la propriété ForceRelativeTo avec les options World, Attachment0, et Attachment1. De plus, la formulation du contrôleur interne est modifiée pour correspondre à celle de BodyPosition.
AlignOrientation satisfait la majorité des cas d'utilisation couverts par l'ancien moteur BodyGyro. Les modes AlignType de AlignOrientation offrent une liberté suffisante pour la plupart des applications et la combinaison de plusieurs contraintes peut répliquer la limite de couple vectoriel. De plus, le mode PrimaryAxisLookAt force l'axe principal du premier attachement de la contrainte (Attachment0) à pointer toujours vers le deuxième attachement (Attachment1), ce qui facilite grandement l'ajout de choses telles que des caméras de sécurité avec suivi de mouvement ou des missiles guidés.
LinearVelocity satisfait la majorité des cas d'utilisation couverts par l'ancien moteur BodyVelocity. Bien que l'ancien moteur permette un vecteur MaxForce, l'application typique de cette force vectorielle était de ramener à zéro un composant particulier, permettant à la contrainte d'être désactivée le long de cette dimension. LinearVelocity atteint un effet similaire en opérant en différents modes VelocityConstraintMode qui correspondent à une (Line), deux (Plane), et trois (Vector) dimensions.
De plus, la propriété ForceLimitMode avec l'option PerAxis s'adapte à toutes les applications de la force vectorielle avec tous les composants non nuls, tels qu'une augmentation de la force le long d'un seul axe pour contrer la gravité.
Bien que AngularVelocity présente quelques divergences avec l'ancien moteur BodyAngularVelocity, des cas spécifiques liés à ces divergences n'ont pas été mis en évidence par la communauté, ni en interne.
En tant qu'amélioration distincte, AngularVelocity fonctionne avec des Attachments et la propriété RelativeTo vous permet de spécifier le CFrame dans lequel la force est spécifiée, par exemple World ou Attachment1.
VectorForce satisfait tous les cas d'utilisation offerts par les moteurs dépréciés BodyForce et BodyThrust. La contrainte moderne fonctionne avec Attachments et sa propriété RelativeTo vous permet d'appliquer une force à un décalage relatif par rapport au centre, similaire à la façon dont BodyThrust.Location fonctionnait.
Une combinaison de LineForce et de AlignOrientation satisfait la majorité des cas d'utilisation couverts par l'ancien moteur RocketPropulsion. Dans l'exemple d'un missile guidé, LineForce peut être utilisé pour contrôler le comportement de "suivi de cible" de RocketPropulsion tandis que AlignOrientation et sa propriété LookAtPosition peuvent être utilisées pour contrôler le comportement de "faire face à la cible".