Objets tournants sont des objets qui tournent autour d'un ou plusieurs axes dans l'espace 3D. En utilisant la puissance intégrée du moteur de simulation de Roblox, vous pouvez faire tourner des objets et interagir 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 Spinning Objects .rbxl comme référence, ce tutoriel explique comment les forces physiques impactent le mouvement angulaire dans Studio, et vous montre diverses techniques pour faire tourner des objets dans vos jeux avec différents comportements de rotation, y compris des conseils sur :
- Utiliser une contrainte de mouvement AngularVelocity pour faire tourner un ensemble entier à une vitesse angulaire constante.
- Utiliser une contrainte mécanique HingeConstraint pour faire tourner une partie au sein d'un ensemble à une vitesse angulaire constante pendant que le reste de l'ensemble reste stationnaire.
- Utiliser la méthode ApplyAngularImpulse pour faire tourner un ensemble avec une impulsion initiale de force angulaire afin que l'ensemble décélère lentement au fil du temps.
Mouvement angulaire 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 le comportement des objets tournants dans les jeux, il est important d'avoir une compréhension générale de la façon dont les objets tournent dans la vie réelle avec le mouvement angulaire.
Mouvement angulaire, ou mouvement de rotation, est le mouvement autour d'un point ou d'un axe fixe. Par exemple, lorsqu'une hélice a un mouvement angulaire, elle tourne autour de son axe de rotation au milieu de l'hélice.

Le mouvement angulaire ne peut exister sans des forces physiques externes poussant ou tirant les objets pour les faire tourner. 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, une hélice stationnaire reste stationnaire à moins qu'une force physique comme le vent ne la pousse à tourner.
Couple est la mesure de la force physique qui fait tourner les objets, et il est responsable de l'accélération angulaire des objets. Ce concept est particulièrement important pour faire tourner des objets dans Studio ; plus vous appliquez de couple aux objets, plus ils peuvent accélérer rapidement.
C'est parce que le couple doit être supérieur à toutes les forces physiques directionnelles qui s'opposent à l'objet, telles que la gravité ou la friction. Par exemple, si vous deviez placer l'hélice dans de la terre, la force physique du vent doit surmonter la quantité de friction de la terre pour continuer à accélérer l'hélice tournante. Si la force du vent n'est pas beaucoup plus grande que la friction de la terre, l'hélice accélère, mais plus lentement que dans l'exemple précédent.

Vitesse angulaire est la mesure du taux de rotation d'un objet, ou à quelle vitesse l'objet tourne autour d'un point ou d'un axe fixe sur une période de temps. Studio mesure la vitesse angulaire selon combien de radians un objet tourne par seconde. Il y a 2π radians (6.283) dans une rotation, donc pour qu'un objet fasse une rotation complète par seconde, il doit avoir suffisamment de couple pour tourner d'environ 6 radians. Comprendre la vitesse angulaire est important pour concevoir le gameplay dans vos jeux car cela vous aide à déterminer combien de couple vous avez besoin pour atteindre une certaine accélération pour vos objets tournants.
Les sections suivantes approfondissent ces concepts alors que vous apprenez à faire tourner des objets à une vitesse angulaire constante ou initiale avec le couple 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 rotation idéal dans Studio.
Maintenir une force angulaire constante
Pour qu'un objet atteigne et maintienne une vitesse angulaire constante, il a besoin d'une force angulaire pour surmonter toutes les forces physiques opposées qui décélèrent la vitesse angulaire de l'objet ou qui empêchent l'objet de rester stationnaire. Par exemple, si vous voulez qu'un objet ait une vitesse angulaire de [0, 12, 0] dans Studio, vous avez besoin de suffisamment de couple pour que l'objet atteigne et maintienne 12 radians par seconde le long de l'axe Y dans son environnement, soit environ deux rotations complètes par seconde.
La quantité de couple que vous appliquez à vos objets 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 tournent sur le même axe, l'objet plus grand avec un plus grand moment d'inertie nécessite plus de couple pour atteindre la même accélération.
Les sous-sections suivantes utilisent des ensembles de différentes formes et tailles pour vous apprendre à faire tourner soit un objet entier, soit seulement une partie de l'objet. En expérimentant avec différentes valeurs de propriétés, vous apprendrez à estimer la quantité maximale de couple dont vous avez besoin pour les ensembles dans vos propres jeux.
Utiliser des contraintes AngularVelocity
Les objets AngularVelocity sont un type de contrainte de mouvement qui applique du couple sur un ensemble entier pour maintenir une vitesse angulaire constante. Pour commencer à faire tourner l'ensemble, la contrainte AngularVelocity doit savoir :
- Le point et la direction positive ou négative pour appliquer une force angulaire.
- La quantité de radians que vous voulez que l'ensemble tourne par seconde.
- La quantité maximale de couple que le moteur peut appliquer pour que l'ensemble atteigne une vitesse angulaire constante.
Pour démontrer ce processus, vous allez ajouter un bloc à votre espace de travail avec une attache à laquelle une contrainte AngularVelocity fait référence pour faire tourner le bloc à 6 radians par seconde le long de l'axe Y du monde à une vitesse angulaire constante, soit environ une rotation complète.

Ajouter une attache
Vous pouvez spécifier le point fixe pour faire tourner un ensemble en ajoutant un objet Attachment à l'ensemble, puis en configurant la position de l'attache dans l'espace 3D. Le jeu d'exemple Spinning Objects place une attache au centre d'une pièce de bloc afin que la contrainte puisse faire tourner la pièce dans le sens antihoraire autour de son centre.
Les attaches incluent des aides visuelles pour vous aider à visualiser leurs axes de rotation. La flèche jaune indique l'axe principal de l'attache, et la flèche orange indique l'axe secondaire de l'attache. Bien qu'aucun des axes de rotation n'influence la rotation du bloc 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 HingeConstraint dans la technique suivante.

Pour ajouter une attache :
Dans la fenêtre Explorer, insérez une pièce bloc dans l'Espace de travail.

Insérez une attache dans la nouvelle pièce.
- Dans la fenêtre Explorer, survolez la pièce et cliquez sur le bouton ⊕. Un menu contextuel s'affiche.
- Dans le menu, insérez une Attache. L'attache s'affiche au centre de la pièce.
- Renommez l'attache en SpinAttachment.

Configurer la contrainte
Maintenant que votre bloc a un point fixe pour le faire tourner, vous pouvez configurer les propriétés d'une contrainte AngularVelocity pour spécifier la direction de rotation, l'axe ou les axes pour appliquer une vitesse angulaire constante cible, la quantité de radians que vous voulez que le bloc tourne par seconde, et la quantité maximale de couple que le moteur peut appliquer pour que le bloc atteigne une vitesse angulaire constante.
Le jeu d'exemple Spinning Objects applique jusqu'à 1000 Rowton-studs de force angulaire constante pour faire tourner le bloc à 6 radians par seconde le long de l'axe Y du monde à une vitesse angulaire constante. Les Rowton-studs sont les unités physiques principales de Roblox pour mesurer le couple. Pour référencer les unités physiques de Roblox et comment elles se convertissent en unités métriques, voir Roblox Units.
Pour configurer une contrainte AngularVelocity :
Pour rendre la contrainte visible dans le viewport afin que vous puissiez référencer sa direction de rotation, activez Afficher les détails de la contrainte dans le menu Affichage de Studio.
Insérez une contrainte AngularVelocity dans la pièce.
- Dans la fenêtre Explorer, survolez la pièce, puis cliquez sur l'icône ⊕. Un menu contextuel s'affiche.
- Dans le menu contextuel, insérez AngularVelocity. L'aide visuelle de la contrainte s'affiche au milieu de la pièce.
Assignez l'attache de la pièce à la nouvelle contrainte.
- Dans la fenêtre Explorer, sélectionnez la contrainte.
- Dans la fenêtre Propriétés,
- Réglez Attachment0 sur SpinAttachment.
- Réglez AngularVelocity sur 0, 6, 0 pour faire tourner la pièce à 6 radians par seconde le long de l'axe Y. Notez que si vous deviez régler cette propriété sur 0, -6, 0, le bloc tournerait dans le sens horaire.
- Réglez MaxTorque sur 1000 pour appliquer jusqu'à 1000 Rowton-studs de force angulaire constante par seconde pour atteindre la vitesse angulaire cible.
- Gardez RelativeTo sur World pour faire tourner le bloc par rapport à la position et à l'orientation du monde.

Vérifiez que la quantité de couple que vous avez définie fait tourner le bloc à 6 radians par seconde le long de l'axe Y du monde.
Sélectionnez le mode de simulation Exécuter dans le menu déroulant de la mezzanine et cliquez sur le bouton Jouer pour commencer. Studio simule le jeu à la position actuelle de la caméra sans votre avatar dans l'espace 3D.

Vous devrez peut-être ajuster votre couple en fonction de l'échelle de votre bloc et de toutes les forces physiques opposées dans votre environnement. Par exemple, les propriétés de la contrainte AngularVelocity dans le jeu d'exemple fonctionnent pour une pièce de bloc de taille par défaut de 4, 1, 2 sur une plateforme plate avec un matériau plastique, et un environnement avec la gravité classique par défaut.
Cependant, si votre bloc est de plus grande taille et sur un terrain herbeux, vous devez augmenter votre propriété AngularVelocity.MaxTorque car la force angulaire doit surmonter à la fois la masse du bloc et la friction de l'environnement. Par exemple, la grande pièce de bloc qui est quadruple de la taille de la pièce d'exemple nécessite au moins 300000 Rowton-studs de force angulaire constante pour atteindre la vitesse angulaire définie !
Utiliser des contraintes HingeConstraint
Les objets HingeConstraint sont un type de contrainte mécanique qui permet à deux attaches de tourner autour d'un axe, contraignant les attaches à la même position et leurs axes principaux dans la même direction. Lorsque vous définissez HingeConstraint.ActuatorType sur Moteur, cette contrainte applique du couple sur les deux attaches dans le but que les attaches atteignent et maintiennent une vitesse angulaire constante.
De plus, lorsque vous placez des attaches dans un ensemble avec deux objets, les objets se verrouillent ensemble et tentent de tourner ensemble selon l'axe principal fixe de l'attache. Si vous ancrez l'un de ces objets, la force angulaire continue de faire tourner l'autre objet à une vitesse angulaire constante pendant que le reste de l'ensemble reste stationnaire.
Par exemple, pour commencer à faire tourner un objet particulier dans un ensemble, la contrainte HingeConstraint doit savoir :
- La position où vous voulez que les attaches se chevauchent.
- Le point et la direction positive ou négative pour appliquer une force angulaire.
- La quantité de radians que vous voulez que l'attache tourne par seconde.
- La quantité maximale de couple que le moteur peut appliquer pour que l'attache atteigne une vitesse angulaire constante.
Pour démontrer ce processus, vous allez ajouter un ensemble d'hélice avec deux objets à votre espace de travail avec des attaches dans les deux objets auxquelles une contrainte HingeConstraint fait référence pour faire tourner l'hélice à 3 radians par seconde (environ la moitié d'une rotation complète par seconde) le long de l'axe Y à une vitesse angulaire constante pendant que la base de l'hélice reste stationnaire.

Obtenir l'actif hélice
Le Creator Store est un onglet de la Boîte à outils que vous pouvez utiliser pour trouver tous les actifs créés par Roblox et la communauté Roblox pour une utilisation dans vos projets, y compris des modèles, des images, des maillages, des audio, des plugins, des vidéos et des polices. Vous pouvez utiliser le Creator Store pour ajouter un actif individuel ou une bibliothèque d'actifs directement dans un jeu ouvert.
Ce tutoriel fait référence à un modèle d'hélice que vous pouvez utiliser en répliquant chaque étape de la technique HingeConstraint pour faire tourner des objets. Pour obtenir cet actif hélice de votre inventaire dans votre jeu :
Ajoutez l'hélice à votre inventaire.
- Accédez à la page de détails de l'actif sur le Creator Store.
- Dans le coin supérieur droit, cliquez sur le bouton Obtenir le modèle. L'actif hélice est maintenant dans votre inventaire, et vous pouvez le réutiliser dans n'importe quel projet sur la plateforme.
Dans Studio, accédez à l'onglet Accueil, puis cliquez sur le bouton Boîte à outils. La fenêtre Boîte à outils s'ouvre.

Dans la fenêtre Boîte à outils, cliquez sur l'onglet Inventaire. Le tri Mes modèles s'affiche.

Cliquez sur la tuile Hélice. Le modèle s'affiche dans votre viewport.

Configurer les attaches
Vous pouvez spécifier à la fois la position où vous voulez que les attaches se chevauchent et la direction du mouvement de rotation pour faire tourner 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 Spinning Objects aligne deux attaches près de la position où l'hélice non ancrée se chevauche avec la base ancrée, et oriente leur axe principal de rotation vers le haut afin qu'elles tournent dans le sens antihoraire. L'attache de base ne peut pas tourner dans cet exemple car la base est ancrée.
Pour configurer les attaches pour la contrainte de charnière :
Insérez un objet Attachment dans Head et Base.
- Dans la fenêtre Explorer, survolez Head et cliquez sur le bouton ⊕. Un menu contextuel s'affiche.
- Dans le menu, insérez une Attache.
- Répétez ce processus pour Base.
- Renommez les deux attaches en HeadAttachment et BaseAttachment, respectivement.

Faites pivoter HeadAttachment et BaseAttachment de sorte que l'axe principal de chaque attache pointe vers le haut sur l'axe Y. Cela indique à Studio de faire tourner les attaches dans le sens antihoraire.

Déplacez BaseAttachment vers le haut de Base, et HeadAttachment vers le bord inférieur de Propeller. Cela indique à Studio où connecter la charnière elle-même, et chevaucher les deux attaches à l'exécution.

Configurer la contrainte
Maintenant que vos attaches ont une position pour se chevaucher et une direction de mouvement de rotation, vous pouvez configurer les propriétés d'une contrainte HingeConstraint pour spécifier la quantité de radians que vous voulez que l'attache tourne par seconde, et la quantité maximale de couple que le moteur peut appliquer pour que l'attache atteigne une vitesse angulaire constante.
Comme dans la technique précédente, le jeu d'exemple Spinning Objects applique jusqu'à 1000 Rowton-studs de force angulaire constante pour faire tourner l'attache à 3 radians par seconde le long de l'axe Y à une vitesse angulaire constante. Cependant, parce que l'attache de base est dans un objet ancré, seule l'attache de l'hélice peut tourner.
Pour configurer une contrainte de charnière :
Insérez un objet HingeConstraint dans Head.
- Dans la fenêtre Explorer, survolez Head, puis cliquez sur l'icône ⊕. Un menu contextuel s'affiche.
- Dans le menu contextuel, insérez une HingeConstraint.
Assignez les attaches de l'hélice à la nouvelle contrainte afin que l'hélice tourne en relation avec la base ancrée.
- Dans la fenêtre Explorer, sélectionnez la contrainte.
- Dans la fenêtre Propriétés,
- Réglez Attachment0 sur BaseAttachment.
- Réglez Attachment1 sur HeadAttachment. La charnière 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 Moteur. De nouveaux champs de propriété s'affichent.
- Réglez MotorMaxTorque sur 1000 pour appliquer jusqu'à 1000 Rowton-studs de force angulaire constante pour atteindre la vitesse angulaire cible.
- Réglez AngularVelocity sur 3 pour faire tourner la tête de l'hélice à 3 radians par seconde.

Vérifiez que la quantité de couple que vous avez définie fait tourner l'hélice à 3 radians par seconde le long de l'axe Y.
Sélectionnez le mode de simulation Exécuter dans le menu déroulant de la mezzanine et cliquez sur le bouton Jouer pour commencer. Studio simule le jeu à la position actuelle de la caméra sans votre avatar dans l'espace 3D.

Appliquer une force angulaire initiale
Une autre façon de changer la vitesse angulaire d'un objet est d'appliquer une impulsion de force angulaire. Après l'impulsion de force angulaire, 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 constante s'il n'y a pas de forces opposées.
Cette technique est utile pour faire tourner des objets après un événement de jeu ou météorologique significatif, comme une forte rafale de vent, car elle fournit un retour instantané aux joueurs. Pour démontrer, la sous-section suivante vous apprend à faire tourner un ensemble avec une force angulaire initiale aléatoire que vous pouvez adapter avec de nouvelles valeurs pour répondre à vos propres exigences de jeu.
Utiliser ApplyAngularImpulse
La méthode ApplyAngularImpulse applique du couple sur un ensemble entier pour obtenir une vitesse angulaire initiale avant de ralentir jusqu'à l'arrêt. Pour commencer à faire tourner l'ensemble, la méthode doit savoir :
- L'ensemble à faire tourner.
- L'axe sur lequel appliquer le couple pour atteindre une vitesse angulaire initiale.
- La quantité de couple à appliquer à chaque axe.
Vous pouvez définir toutes ces valeurs dans un script. Par exemple, le script d'exemple définit l'ensemble à faire tourner comme le parent du script, puis applique une impulsion aléatoire de force angulaire entre 0 et 100 Rowton-studs sur l'axe Y.
Pour faire tourner un ensemble en utilisant ApplyAngularImpulse :
Insérez une pièce sphère dans l'Espace de travail. L'exemple utilise une sphère avec un MaterialVariant afin que vous puissiez clairement visualiser le mouvement de la sphère.

Insérez un script dans la nouvelle pièce.
- Dans la fenêtre Explorer, survolez la pièce et cliquez sur le bouton ⊕. Un menu contextuel s'affiche.
- Dans le menu, insérez un Script.
Remplacez le code par défaut par le code suivant :
local part = script.Parent
local impulse = Vector3.new(0, math.random(0, 100), 0)
part:ApplyAngularImpulse(impulse)