Rotierende Objekte sind Objekte, die sich um eine oder mehrere Achsen im 3D-Raum drehen. Mit der integrierten Leistung von Roblox' Simulationsengine können Sie Objekte zum Drehen bringen und mit ihrer Umgebung interagieren, sodass sie ein Verhalten emulieren, das in der realen Welt vertraut und intuitiv für die Spieler ist, wie z.B. Schwerkraft, Aerodynamik und Reibung.
Anhand der Rotierenden Objekte .rbxl-Datei als Referenz erklärt dieses Tutorial, wie physikalische Kräfte die Winkelbewegung im Studio beeinflussen, und zeigt Ihnen verschiedene Techniken, um Objekte in Ihren Spielen mit unterschiedlichen Drehverhalten zu rotieren, einschließlich Anleitungen zu:
- Verwendung eines AngularVelocity-Mover-Constraints, um eine gesamte Baugruppe mit einer konstanten Winkelgeschwindigkeit zu drehen.
- Verwendung eines HingeConstraint-mechanischen Constraints, um ein Teil innerhalb einer Baugruppe mit einer konstanten Winkelgeschwindigkeit zu drehen, während der Rest der Baugruppe stationär bleibt.
- Verwendung der Methode ApplyAngularImpulse, um eine Baugruppe mit einem anfänglichen Impuls von Drehkraft zu drehen, sodass die Baugruppe im Laufe der Zeit langsam abbremst.
Winkelbewegung und physikalische Kräfte
Roblox Studio ist eine Simulationsengine der realen Welt, die physikalisches Verhalten in Echtzeit emuliert. Um das Verhalten rotierender Objekte in Spielen vorherzusagen, ist es wichtig, ein grundlegendes Verständnis dafür zu haben, wie sich Objekte im echten Leben mit Winkelbewegung drehen.
Winkelbewegung, oder Rotationsbewegung, ist die Bewegung um einen festen Punkt oder eine Achse. Zum Beispiel, wenn ein Propeller Winkelbewegung hat, dreht er sich um seine Rotationsachse in der Mitte des Propellers.

Winkelbewegung kann nicht existieren, ohne dass externe physikalische Kräfte Objekte zum Drehen drängen oder ziehen. Laut Newtons erster Bewegungsgesetz bleiben stationäre Objekte stationär und sich bewegende Objekte bleiben mit einer konstanten Geschwindigkeit in Bewegung, es sei denn, sie werden von einer externen Kraft beeinflusst. Zum Beispiel bleibt ein stationärer Propeller stationär, es sei denn, eine physikalische Kraft wie Wind drängt ihn zum Drehen.
Drehmoment ist das Maß für die physikalische Kraft, die Objekte zum Drehen bringt, und es ist verantwortlich dafür, dass Objekte eine Winkelbeschleunigung erhalten. Dieses Konzept ist besonders wichtig, damit Objekte im Studio rotieren; je mehr Drehmoment Sie auf Objekte anwenden, desto schneller können sie beschleunigen.
Das liegt daran, dass das Drehmoment größer sein muss als alle gerichteten physikalischen Kräfte, die gegen das Objekt drücken, wie z.B. Schwerkraft oder Reibung. Wenn Sie beispielsweise den Propeller in den Boden setzen, muss die physikalische Kraft des Windes die Menge an Reibung vom Boden überwinden, um den rotierenden Propeller weiter zu beschleunigen. Wenn die Kraft des Windes nicht viel größer ist als die Reibung vom Boden, beschleunigt der Propeller, jedoch langsamer als im vorherigen Beispiel.

Winkelgeschwindigkeit ist das Maß für die Rotationsrate eines Objekts oder wie schnell sich das Objekt über einen festen Punkt oder eine Achse über einen Zeitraum dreht. Studio misst die Winkelgeschwindigkeit anhand der Anzahl der Bogenmaß, die ein Objekt pro Sekunde dreht. Es gibt 2π Bogenmaß (6.283) in einer Umdrehung, sodass ein Objekt, um eine volle Umdrehung pro Sekunde zu machen, genügend Drehmoment haben muss, um etwa 6 Bogenmaß zu drehen. Das Verständnis der Winkelgeschwindigkeit ist wichtig für das Design von Gameplay in Ihren Spielen, da es Ihnen hilft zu bestimmen, wie viel Drehmoment Sie benötigen, um eine bestimmte Beschleunigung für Ihre rotierenden Objekte zu erreichen.
Die folgenden Abschnitte vertiefen diese Konzepte, während Sie lernen, wie man Objekte entweder mit einer konstanten oder einer anfänglichen Winkelgeschwindigkeit mit dem notwendigen Drehmoment dreht, um alle entgegenwirkenden physikalischen Kräfte in der Umgebung zu überwinden. Während Sie diese physikalischen Konzepte mit den kommenden Techniken überprüfen, können Sie genauer vorhersagen, wie Sie die Eigenschaftswerte anpassen, um ein ideales Drehverhalten im Studio zu erreichen.
Eine konstante Winkelkraft aufrechterhalten
Damit ein Objekt eine konstante Winkelgeschwindigkeit erreicht und aufrechterhält, benötigt es eine Winkelkraft, um alle entgegenwirkenden physikalischen Kräfte zu überwinden, die entweder die Winkelgeschwindigkeit des Objekts verringern oder dazu führen, dass das Objekt stationär bleibt. Wenn Sie beispielsweise möchten, dass ein Objekt eine Winkelgeschwindigkeit von [0, 12, 0] im Studio hat, benötigen Sie genügend Drehmoment, damit das Objekt 12 Bogenmaß pro Sekunde entlang der Y-Achse in seiner Umgebung erreicht und aufrechterhält, oder etwa zwei volle Umdrehungen pro Sekunde.
Die Menge an Drehmoment, die Sie auf Ihre Objekte anwenden, hängt nicht nur von den entgegenwirkenden physikalischen Kräften in der Umgebung selbst ab, wie z.B. Schwerkraft und Reibung, sondern auch vom Objekt selbst. Wenn Sie beispielsweise zwei Objekte derselben Form haben, die sich um dieselbe Achse drehen, benötigt das größere Objekt mit dem größeren Trägheitsmoment mehr Drehmoment, um die gleiche Winkelbeschleunigung zu erreichen.
Die folgenden Unterabschnitte verwenden Baugruppen unterschiedlicher Formen und Größen, um Ihnen beizubringen, wie man entweder ein ganzes Objekt oder nur einen Teil des Objekts dreht. Während Sie mit verschiedenen Eigenschaftswerten experimentieren, lernen Sie, wie Sie die maximale Menge an Drehmoment schätzen, die Sie für Baugruppen in Ihren eigenen Spielen benötigen.
Verwenden Sie AngularVelocity-Constraints
AngularVelocity-Objekte sind eine Art von Mover-Constraint, die Drehmoment auf eine gesamte Baugruppe anwenden, um eine konstante Winkelgeschwindigkeit aufrechtzuerhalten. Um die Baugruppe zu drehen, muss der AngularVelocity-Constraint wissen:
- Den Punkt und die positive oder negative Richtung, um eine Winkelkraft anzuwenden.
- Die Menge an Bogenmaß, die Sie möchten, dass die Baugruppe pro Sekunde dreht.
- Die maximale Menge an Drehmoment, die die Engine anwenden kann, damit die Baugruppe eine konstante Winkelgeschwindigkeit erreicht.
Um diesen Prozess zu demonstrieren, fügen Sie einen Block zu Ihrem Arbeitsbereich hinzu, mit einer Befestigung, auf die ein AngularVelocity-Constraint verweist, um den Block mit 6 Bogenmaß pro Sekunde entlang der Y-Achse der Welt mit einer konstanten Winkelgeschwindigkeit zu drehen, oder etwa eine volle Umdrehung.

Befestigung hinzufügen
Sie können den festen Punkt zum Drehen einer Baugruppe angeben, indem Sie ein Attachment-Objekt zur Baugruppe hinzufügen und dann die Position der Befestigung im 3D-Raum konfigurieren. Das Beispielspiel Rotierende Objekte platziert eine Befestigung in der Mitte eines Blockteils, sodass der Constraint das Teil gegen den Uhrzeigersinn um die Mitte selbst drehen kann.
Befestigungen enthalten visuelle Hilfen, die Ihnen helfen, ihre Rotationsachsen zu visualisieren. Der gelbe Pfeil zeigt die primäre Achse der Befestigung an, und der orangefarbene Pfeil zeigt die sekundäre Achse der Befestigung an. Während keine der Rotationsachsen die Drehung des Blocks in den Schritten dieser Technik beeinflusst, ist es wichtig, diese visuellen Hilfen für zukünftige Referenzen zu verstehen, da sie Ihnen helfen können, das ideale Verhalten für verschiedene Arten von Constraints zu bestimmen, wie z.B. das HingeConstraint in der nächsten Technik.

Um eine Befestigung hinzuzufügen:
Fügen Sie im Explorer-Fenster ein Block-Teil in den Arbeitsbereich ein.

Fügen Sie eine Befestigung in das neue Teil ein.
- Im Explorer-Fenster fahren Sie mit der Maus über das Teil und klicken auf die ⊕-Schaltfläche. Ein kontextuelles Menü wird angezeigt.
- Wählen Sie im Menü eine Befestigung aus. Die Befestigung wird in der Mitte des Teils angezeigt.
- Benennen Sie die Befestigung in SpinAttachment um.

Constraint konfigurieren
Jetzt, da Ihr Block einen festen Punkt hat, um den Block zu drehen, können Sie die Eigenschaften eines AngularVelocity-Constraints konfigurieren, um die Rotationsrichtung, die Achse oder Achsen anzugeben, um eine Zielkonstante Winkelgeschwindigkeit anzuwenden, die Menge an Bogenmaß, die Sie möchten, dass der Block pro Sekunde dreht, und die maximale Menge an Drehmoment, die die Engine anwenden kann, damit der Block eine konstante Winkelgeschwindigkeit erreicht.
Das Beispielspiel Rotierende Objekte wendet bis zu 1000 Rowton-Stunden konstanter Winkelkraft an, um den Block mit 6 Bogenmaß pro Sekunde entlang der Y-Achse der Welt mit einer konstanten Winkelgeschwindigkeit zu drehen. Rowton-Stunden sind die primären physikalischen Einheiten von Roblox zur Messung von Drehmoment. Um auf die physikalischen Einheiten von Roblox und deren Umrechnung in metrische Einheiten zu verweisen, siehe Roblox-Einheiten.
Um ein AngularVelocity-Constraint zu konfigurieren:
Um den Constraint im Ansichtsfenster sichtbar zu machen, damit Sie auf seine Rotationsrichtung verweisen können, aktivieren Sie Constraint-Details anzeigen im Ansicht-Menü von Studio.
Fügen Sie ein AngularVelocity-Constraint in das Teil ein.
- Im Explorer-Fenster fahren Sie mit der Maus über das Teil und klicken dann auf das ⊕-Symbol. Ein kontextuelles Menü wird angezeigt.
- Wählen Sie im kontextuellen Menü AngularVelocity aus. Die visuelle Hilfe des Constraints wird in der Mitte des Teils angezeigt.
Weisen Sie die Befestigung des Teils dem neuen Constraint zu.
- Im Explorer-Fenster wählen Sie den Constraint aus.
- Im Eigenschaften-Fenster,
- Setzen Sie Attachment0 auf SpinAttachment.
- Setzen Sie AngularVelocity auf 0, 6, 0, um das Teil mit 6 Bogenmaß pro Sekunde entlang der Y-Achse zu drehen. Beachten Sie, dass der Block sich im Uhrzeigersinn drehen würde, wenn Sie diese Eigenschaft auf 0, -6, 0 setzen würden.
- Setzen Sie MaxTorque auf 1000, um bis zu 1000 Rowton-Stunden konstanter Winkelkraft pro Sekunde anzuwenden, um die Zielwinkelgeschwindigkeit zu erreichen.
- Lassen Sie RelativeTo auf World, um den Block relativ zur Position und Orientierung der Welt zu drehen.

Überprüfen Sie, ob die Menge an Drehmoment, die Sie eingestellt haben, den Block mit 6 Bogenmaß pro Sekunde entlang der Y-Achse der Welt dreht.
Wählen Sie den Run-Simulationsmodus aus dem Dropdown-Menü der Mezzanine und klicken Sie auf die Play-Schaltfläche, um zu beginnen. Studio simuliert das Spiel an der aktuellen Kameraposition ohne Ihren Avatar im 3D-Raum.

Möglicherweise müssen Sie Ihr Drehmoment je nach Maßstab Ihres Blocks und allen entgegenwirkenden physikalischen Kräften in Ihrer Umgebung anpassen. Beispielsweise funktionieren die Eigenschaften des AngularVelocity-Constraints im Beispielspiel für ein Blockteil mit einer Standardgröße von 4, 1, 2 auf einer flachen Plattform mit einem Kunststoffmaterial und einer Umgebung mit der klassischen Voreinstellung für Schwerkraft.
Wenn Ihr Block jedoch eine größere Größe hat und sich auf Grasterrain befindet, müssen Sie Ihre AngularVelocity.MaxTorque-Eigenschaft erhöhen, da die Winkelkraft sowohl die Masse des Blocks als auch die Reibung aus der Umgebung überwinden muss. Beispielsweise benötigt das große Blockteil, das viermal so groß ist wie das Teil im Beispiel, mindestens 300000 Rowton-Stunden konstanter Winkelkraft, um die festgelegte Winkelgeschwindigkeit zu erreichen!
Verwenden Sie HingeConstraint-Constraints
HingeConstraint-Objekte sind eine Art von mechanischem Constraint, das es zwei Befestigungen ermöglicht, sich um eine Achse zu drehen, wobei die Befestigungen in derselben Position und ihre primären Achsen in dieselbe Richtung eingeschränkt sind. Wenn Sie HingeConstraint.ActuatorType auf Motor setzen, wendet dieser Constraint Drehmoment auf die beiden Befestigungen an, mit dem Ziel, dass die Befestigungen eine konstante Winkelgeschwindigkeit erreichen und aufrechterhalten.
Darüber hinaus, wenn Sie Befestigungen in eine Baugruppe mit zwei Objekten einfügen, verriegeln sich die Objekte zusammen und versuchen, sich gemäß der festen primären Achse der Befestigung gemeinsam zu drehen. Wenn Sie eines dieser Objekte verankern, dreht die Winkelkraft das andere Objekt weiterhin mit einer konstanten Winkelgeschwindigkeit, während der Rest der Baugruppe stationär bleibt.
Um beispielsweise ein bestimmtes Objekt innerhalb einer Baugruppe zu drehen, muss der HingeConstraint-Constraint wissen:
- Die Position, an der Sie möchten, dass sich die Befestigungen überlappen.
- Den Punkt und die positive oder negative Richtung, um eine Winkelkraft anzuwenden.
- Die Menge an Bogenmaß, die Sie möchten, dass sich die Befestigung pro Sekunde dreht.
- Die maximale Menge an Drehmoment, die die Engine anwenden kann, damit die Befestigung eine konstante Winkelgeschwindigkeit erreicht.
Um diesen Prozess zu demonstrieren, fügen Sie eine Propellerbaugruppe mit zwei Objekten zu Ihrem Arbeitsbereich hinzu, mit Befestigungen in beiden Objekten, auf die ein HingeConstraint-Constraint verweist, um den Propeller mit 3 Bogenmaß pro Sekunde (etwa die Hälfte einer vollen Umdrehung pro Sekunde) entlang der Y-Achse mit einer konstanten Winkelgeschwindigkeit zu drehen, während die Basis des Propellers stationär bleibt.

Propeller-Asset abrufen
Der Creator Store ist ein Tab des Toolbox, den Sie verwenden können, um alle Assets zu finden, die von Roblox und der Roblox-Community für die Verwendung in Ihren Projekten erstellt wurden, einschließlich Modell-, Bild-, Mesh-, Audio-, Plugin-, Video- und Schriftarten-Assets. Sie können den Creator Store verwenden, um ein einzelnes Asset oder eine Asset-Bibliothek direkt in ein offenes Spiel hinzuzufügen.
Dieses Tutorial verweist auf ein Propeller-Modell, das Sie verwenden können, während Sie jeden Schritt der HingeConstraint-Technik zum Drehen von Objekten replizieren. Um dieses Propeller-Asset aus Ihrem Inventar in Ihr Spiel zu bekommen:
Fügen Sie den Propeller Ihrem Inventar hinzu.
- Navigieren Sie zur Detailseite des Assets im Creator Store.
- Klicken Sie in der oberen rechten Ecke auf die Schaltfläche Modell abrufen. Das Propeller-Asset befindet sich jetzt in Ihrem Inventar, und Sie können es in jedem Projekt auf der Plattform wiederverwenden.
Navigieren Sie in Studio zum Home-Tab und klicken Sie auf die Schaltfläche Toolbox. Das Toolbox-Fenster öffnet sich.

Klicken Sie im Toolbox-Fenster auf den Tab Inventar. Die Sortierung Meine Modelle wird angezeigt.

Klicken Sie auf die Propeller-Kachel. Das Modell wird in Ihrem Ansichtsfenster angezeigt.

Befestigungen konfigurieren
Sie können sowohl die Position angeben, an der Sie möchten, dass sich die Befestigungen überlappen, als auch die Richtung der Rotationsbewegung, um ein bestimmtes Objekt innerhalb einer Baugruppe zu drehen, indem Sie zwei Attachment-Objekte zur Baugruppe hinzufügen und dann deren Ausrichtung und Orientierung im 3D-Raum konfigurieren.
Das Beispielspiel Rotierende Objekte richtet zwei Befestigungen in der Nähe der Position aus, an der der nicht verankerte Propeller mit der verankerten Basis überlappt, und orientiert ihre primäre Rotationsachse nach oben, sodass sie sich gegen den Uhrzeigersinn drehen. Die Basisbefestigung kann in diesem Beispiel nicht drehen, da die Basis verankert ist.
Um Befestigungen für den Scharnier-Constraint zu konfigurieren:
Fügen Sie ein Attachment-Objekt in Head und Base ein.
- Im Explorer-Fenster fahren Sie mit der Maus über Head und klicken auf die ⊕-Schaltfläche. Ein kontextuelles Menü wird angezeigt.
- Wählen Sie im Menü eine Befestigung aus.
- Wiederholen Sie diesen Vorgang für Base.
- Benennen Sie beide Befestigungen in HeadAttachment und BaseAttachment um.

Drehen Sie HeadAttachment und BaseAttachment, sodass die primäre Achse jeder Befestigung nach oben auf der Y-Achse zeigt. Dies sagt Studio, dass die Befestigungen gegen den Uhrzeigersinn rotieren sollen.

Bewegen Sie BaseAttachment an die Oberseite von Base und HeadAttachment an die Unterkante von Propeller. Dies sagt Studio, wo sich das Scharnier selbst verbinden soll, und überlappt beide Befestigungen zur Laufzeit.

Constraint konfigurieren
Jetzt, da Ihre Befestigungen eine Position zum Überlappen und eine Richtung der Rotationsbewegung haben, können Sie die Eigenschaften eines HingeConstraint-Constraints konfigurieren, um die Menge an Bogenmaß anzugeben, die Sie möchten, dass sich die Befestigung pro Sekunde dreht, und die maximale Menge an Drehmoment, die die Engine anwenden kann, damit die Befestigung eine konstante Winkelgeschwindigkeit erreicht.
Ähnlich wie bei der vorherigen Technik wendet das Beispielspiel Rotierende Objekte bis zu 1000 Rowton-Stunden konstanter Winkelkraft an, um die Befestigung mit 3 Bogenmaß pro Sekunde entlang der Y-Achse mit einer konstanten Winkelgeschwindigkeit zu drehen. Da sich die Basisbefestigung jedoch in einem verankerten Objekt befindet, kann nur die Befestigung des Propellers drehen.
Um einen Scharnier-Constraint zu konfigurieren:
Fügen Sie ein HingeConstraint-Objekt in Head ein.
- Im Explorer-Fenster fahren Sie mit der Maus über Head, und klicken Sie dann auf das ⊕-Symbol. Ein kontextuelles Menü wird angezeigt.
- Wählen Sie im kontextuellen Menü einen HingeConstraint aus.
Weisen Sie die Befestigungen des Propellers dem neuen Constraint zu, damit sich der Propeller in Bezug auf die verankerte Basis dreht.
- Im Explorer-Fenster wählen Sie den Constraint aus.
- Im Eigenschaften-Fenster,
- Setzen Sie Attachment0 auf BaseAttachment.
- Setzen Sie Attachment1 auf HeadAttachment. Das Scharnier wird im Ansichtsfenster angezeigt.

Wählen Sie im Explorer-Fenster den Constraint aus, und setzen Sie im Eigenschaften-Fenster,
- Setzen Sie ActuatorType auf Motor. Neue Eigenschaftsfelder werden angezeigt.
- Setzen Sie MotorMaxTorque auf 1000, um bis zu 1000 Rowton-Stunden konstanter Winkelkraft anzuwenden, um die Zielwinkelgeschwindigkeit zu erreichen.
- Setzen Sie AngularVelocity auf 3, um den Kopf des Propellers mit 3 Bogenmaß pro Sekunde zu drehen.

Überprüfen Sie, ob die Menge an Drehmoment, die Sie eingestellt haben, den Propeller mit 3 Bogenmaß pro Sekunde entlang der Y-Achse dreht.
Wählen Sie den Run-Simulationsmodus aus dem Dropdown-Menü der Mezzanine und klicken Sie auf die Play-Schaltfläche, um zu beginnen. Studio simuliert das Spiel an der aktuellen Kameraposition ohne Ihren Avatar im 3D-Raum.

Eine anfängliche Winkelkraft anwenden
Eine weitere Möglichkeit, die Winkelgeschwindigkeit eines Objekts zu ändern, besteht darin, einen Impuls von Winkelkraft anzuwenden. Nach dem Impuls von Winkelkraft verlangsamt sich das Objekt entweder, bis es stationär wird, wenn es eine entgegenwirkende Kraft wie Reibung gibt, oder es bleibt in Bewegung mit konstanter Geschwindigkeit, wenn es keine entgegenwirkenden Kräfte gibt.
Diese Technik ist nützlich, um Objekte nach einem signifikanten Gameplay- oder Wetterereignis, wie z.B. einem starken Windstoß, zu drehen, da sie den Spielern sofortiges Feedback gibt. Um dies zu demonstrieren, lehrt der folgende Unterabschnitt, wie man eine Baugruppe mit einer anfänglichen zufälligen Winkelkraft dreht, die Sie mit neuen Werten anpassen können, um Ihren eigenen Gameplay-Anforderungen gerecht zu werden.
Verwenden Sie ApplyAngularImpulse
Die Methode ApplyAngularImpulse wendet Drehmoment auf eine gesamte Baugruppe an, um eine anfängliche Winkelgeschwindigkeit zu erhalten, bevor sie zum Stillstand kommt. Um die Baugruppe zu drehen, muss die Methode wissen:
- Die Baugruppe, die sich drehen soll.
- Die Achse, auf die Drehmoment angewendet werden soll, um eine anfängliche Winkelgeschwindigkeit zu erreichen.
- Die Menge an Drehmoment, die auf jede Achse angewendet werden soll.
Sie können all diese Werte in einem Skript definieren. Zum Beispiel definiert das Beispielskript die Baugruppe, die sich drehen soll, als das übergeordnete Element des Skripts und wendet dann einen zufälligen Impuls von Winkelkraft zwischen 0 und 100 Rowton-Stunden auf der Y-Achse an.
Um eine Baugruppe mit ApplyAngularImpulse zu drehen:
Fügen Sie ein Sphere-Teil in den Arbeitsbereich ein. Das Beispiel verwendet eine Kugel mit einer MaterialVariant, damit Sie die Bewegung der Kugel klar visualisieren können.

Fügen Sie ein Skript in das neue Teil ein.
- Im Explorer-Fenster fahren Sie mit der Maus über das Teil und klicken auf die ⊕-Schaltfläche. Ein kontextuelles Menü wird angezeigt.
- Wählen Sie im Menü ein Skript aus.
Ersetzen Sie den Standardcode durch den folgenden Code:
local part = script.Parent
local impulse = Vector3.new(0, math.random(0, 100), 0)
part:ApplyAngularImpulse(impulse)