Objets en rotation 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, tel que la gravité, l'aérodynamisme et la friction.
En utilisant le fichier Objets en rotation .rbxl comme référence, ce tutoriel explique comment les forces physiques influencent le mouvement angulaire dans Studio, et vous montre diverses techniques pour faire tourner des objets dans vos expériences avec différents comportements de rotation, notamment 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 dans un ensemble à une vitesse angulaire constante pendant que le reste de l'ensemble reste immobile.
- 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 avec le 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 en rotation dans des expériences, il est important d'avoir une compréhension de haut niveau de la façon dont les objets tournent dans la réalité avec un mouvement angulaire.
Mouvement angulaire, ou mouvement de rotation, est le mouvement autour d'un point fixe ou d'un axe. 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 des objets à tourner. Selon la première loi du mouvement de Newton, les objets au repos restent au repos et les objets en mouvement continuent en mouvement avec une vitesse constante à moins qu'ils ne soient soumis à une force externe. Par exemple, une hélice immobile reste immobile à 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 c'est responsable de l'acquisition d'accélération angulaire par les 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 plus grand que 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 friction de la terre pour continuer à faire 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 complète, donc pour qu'un objet fasse une pleine rotation par seconde, il doit avoir suffisamment de couple pour tourner environ 6 radians. Comprendre la vitesse angulaire est important pour concevoir le gameplay dans vos expériences car cela vous aide à déterminer combien de couple vous avez besoin pour atteindre une certaine accélération pour vos objets en rotation.
Les sections suivantes plongent plus profondément dans 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 opposantes 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 obtenir un comportement idéal de rotation 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 opposantes qui décélèrent soit la vitesse angulaire de l'objet, soit causent à l'objet de rester immobile. 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 opposantes au sein de 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 la 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 angulaire.
Les sous-sections suivantes utilisent des assemblages 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 assemblages dans vos propres expériences.
Utiliser des contraintes AngularVelocity
Les objets AngularVelocity sont un type de contrainte de mouvement qui appliquent un 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 souhaitez 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 qu'une contrainte AngularVelocity utilise 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. L'expérience exemple Objets en rotation 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 désigne l'axe principal de l'attache, et la flèche orange désigne l'axe secondaire de l'attache. Bien qu'aucun des axes de rotation n'influence la rotation du bloc durant 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 un 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 de bloc dans le Workspace.

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 Attachment. 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 souhaitez 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.
L'expérience exemple Objets en rotation 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 faire référence aux unités physiques de Roblox et à leur conversion en unités métriques, consultez Unités Roblox.
Pour configurer une contrainte AngularVelocity :
Pour rendre la contrainte visible dans la vue de la caméra afin que vous puissiez faire référence à sa direction de rotation, activez Afficher les détails des contraintes 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 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 la caméra actuelle sans votre avatar dans l'espace 3D.

Vous devrez peut-être ajuster votre couple selon l'échelle de votre bloc et toutes les forces physiques opposantes dans votre environnement. Par exemple, les propriétés de la contrainte AngularVelocity dans l'expérience exemple fonctionnent pour une pièce de bloc avec une taille par défaut de 4, 1, 2 sur une plateforme plate avec un matériau plastique, et un environnement avec la gravité prédéfinie classique.
Cependant, si votre bloc est d'une taille plus grande 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 la taille de la pièce de l'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, en contraignant les attaches à la même position et à leurs axes principaux dans la même direction. Lorsque vous définissez HingeConstraint.ActuatorType sur Motor, cette contrainte applique un couple sur les deux attaches avec l'objectif que les attaches atteignent et maintiennent une vitesse angulaire constante.
De plus, lorsque vous placez des attaches dans un assemblage 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'assemblage reste immobile.
Par exemple, pour commencer à faire tourner un objet particulier dans un assemblage, la contrainte HingeConstraint doit savoir :
- La position où vous souhaitez 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 souhaitez 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 assemblage d'hélice avec deux objets à votre espace de travail avec des attaches dans les deux objets qu'une contrainte HingeConstraint utilise 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 immobile.

Obtenir l'actif hélice
La Boutique Créateur 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 actifs de modèle, image, maillage, audio, plugin, vidéo et police. Vous pouvez utiliser la Boutique Créateur pour ajouter un actif individuel ou une bibliothèque d'actifs directement dans une expérience ouverte.
Ce tutoriel fait référence à un modèle d'hélice que vous pouvez utiliser pour reproduire chaque étape de la technique HingeConstraint de rotation d'objets. Pour obtenir cet actif d'hélice de votre inventaire dans votre expérience :
Ajoutez l'hélice à votre inventaire.
- Accédez à la page de détails de l'actif sur la Boutique Créateur.
- 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 vue.

Configurer les attaches
Vous pouvez spécifier à la fois la position où vous souhaitez que les attaches se chevauchent et la direction du mouvement rotatif pour faire tourner 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 exemple Objets en rotation aligne deux attaches près de la position où l'hélice non ancrée chevauche 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 d'hélice :
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 Attachment.
- Répétez ce processus pour Base.
- Renommez les deux attaches respectivement en HeadAttachment et BaseAttachment.

Faites pivoter HeadAttachment et BaseAttachment afin que l'axe principal de chaque attache pointe vers le haut sur l'axe Y. Cela dit à 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 l'hélice 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 rotatif, vous pouvez configurer les propriétés d'une contrainte HingeConstraint pour spécifier la quantité de radians que vous souhaitez 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.
Tout comme dans la technique précédente, l'expérience exemple Objets en rotation 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 se trouve 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 la vue.

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 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 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 la caméra actuelle 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 soit décélère jusqu'à devenir stationnaire s'il y a une force opposante comme la friction, soit reste en mouvement avec une vitesse constante s'il n'y a pas de forces opposantes.
Cette technique est utile pour faire tourner des objets après un événement de jeu ou de météo significatif, tel qu'une forte rafale de vent, car elle fournit un retour d'information instantané aux joueurs. Pour démontrer, la sous-section suivante vous apprend à faire tourner un assemblage 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 un couple sur un ensemble entier pour obtenir une vitesse angulaire initiale avant de ralentir jusqu'à un arrêt. Pour commencer à faire tourner l'ensemble, la méthode doit connaître :
- L'ensemble à faire tourner.
- L'axe pour appliquer le couple afin d'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 assemblage en utilisant ApplyAngularImpulse :
Insérez une pièce sphère dans le Workspace. L'exemple utilise une sphère avec un MaterialVariant afin que vous puissiez visualiser clairement 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.Parentlocal impulse = Vector3.new(0, math.random(0, 100), 0)part:ApplyAngularImpulse(impulse)