Bewegliche Objekte sind Objekte, die sich auf einer oder mehreren Achsen im 3D-Raum bewegen. Mit der integrierten Leistungsfähigkeit von Roblox' Simulationsengine können Sie Objekte bewegen und mit ihrer Umgebung interagieren, um realistisches physikalisches Verhalten zu emulieren, das den Spielern vertraut und intuitiv erscheint, wie z.B. Schwerkraft, Aerodynamik und Reibung.
Anhand der Beweglichen Objekte .rbxl-Datei als Referenz erklärt dieses Tutorial, wie physikalische Kräfte die lineare Bewegung im Studio beeinflussen und zeigt Ihnen verschiedene Techniken, um Objekte von Punkt A nach Punkt B in Ihren Erlebnissen mit unterschiedlichen Bewegungsverhalten zu bewegen, einschließlich Anleitungen zu:
- Verwendung eines LinearVelocity Mover Constraints, um eine gesamte Baugruppe mit einer konstanten linearen Geschwindigkeit zu bewegen.
- Verwendung eines PrismaticConstraint, um eine Baugruppe auf eine einzige Achse zu beschränken und sie relativ zu einem Punkt im 3D-Raum mit konstanter linearer Geschwindigkeit zu bewegen.
- Verwendung der Methode ApplyImpulse, um eine Baugruppe mit einem anfänglichen Impuls von Kraft zu bewegen, sodass die Baugruppe im Laufe der Zeit langsam abbremst.
Lineare Bewegung und physikalische Kräfte
Roblox Studio ist eine Echtzeitsimulationsengine, die physikalisches Verhalten im echten Leben emuliert. Um vorhersagen zu können, wie sich linear bewegende Objekte in Erlebnissen verhalten können, ist es wichtig, ein grundlegendes Verständnis dafür zu haben, wie sich Objekte im realen Leben mit linearer Bewegung bewegen.
Lineare Bewegung ist die Bewegung entlang einer Achse. Wenn ein Block zum Beispiel eine lineare Bewegung hat, bewegt er sich entlang einer festgelegten Achse.

Lineare Bewegung kann nicht existieren, ohne dass äußere physikalische Kräfte Objekte anstoßen oder ziehen. Gemäß Newtons erster Bewegungsgesetz bleiben stationäre Objekte stationär und sich bewegende Objekte bewegen sich mit einer konstanten Geschwindigkeit, es sei denn, sie werden von einer externen Kraft beeinflusst. Zum Beispiel bleibt ein stationärer Block stationär, es sei denn, eine physikalische Kraft wie Wind drückt ihn dazu, sich zu bewegen.
Kraft ist das Maß für die Richtung und Magnitude eines physischen Schubs oder Zugs, der Objekte dazu bringt, ihre lineare Geschwindigkeit entlang einer Achse zu ändern. Eine Änderung der Geschwindigkeit wird als Beschleunigung bezeichnet. Dieses Konzept ist besonders wichtig, damit sich Objekte im Studio bewegen; je mehr Kraft Sie auf Objekte anwenden, desto schneller beschleunigen sie.
Das liegt daran, dass die aufgebrachte Kraft größer sein muss als die physischen Kräfte, die gegen das Objekt wirken, wie z.B. Schwerkraft oder Reibung. Zum Beispiel, wenn Sie den Block auf einer Metallplatte platzieren, muss die physische Kraft des Windes die Menge an Reibung von der Metallplatte überwinden, um den Block weiter zu beschleunigen. Wenn die Kraft des Windes nicht viel größer ist als die Reibung der Metallplatte, beschleunigt der Block zwar, aber langsamer als im vorherigen Beispiel.

Lineare Geschwindigkeit ist das Maß für die Bewegung eines Objekts oder wie schnell sich das Objekt über einen bestimmten Zeitraum entlang einer Achse bewegt. Das Studio misst die lineare Geschwindigkeit anhand der Anzahl der Studs, die ein Objekt pro Sekunde bewegt. Studs sind die primären physikalischen Einheiten von Roblox zur Messung von Länge, wobei jeder Stud etwa 28 cm in der realen Welt entspricht.

Das Verständnis der linearen Geschwindigkeit ist wichtig für das Design von Gameplay in Ihren Erlebnissen, da es Ihnen hilft zu bestimmen, wie viel Kraft Sie benötigen, um eine bestimmte Geschwindigkeit für Ihre beweglichen Objekte zu erreichen. Wenn Sie beispielsweise Objekte nach oben beschleunigen möchten, ist es wichtig zu berücksichtigen, wie Sie Ihre Kraft anpassen müssen, um die Schwerkraft innerhalb der Umgebung zu überwinden, damit sich die Objekte genau bewegen.
Die folgenden Abschnitte tauchen tiefer in diese Konzepte ein, während Sie lernen, wie man Objekte mit konstanter oder anfänglicher linearer Geschwindigkeit mit der erforderlichen Kraft bewegt, um jegliche entgegenwirkenden physikalischen Kräfte innerhalb der Umgebung zu überwinden. Während Sie diese physikalischen Konzepte mit den bevorstehenden Techniken durchgehen, können Sie genauer vorhersagen, wie Sie Eigenschaftswerte anpassen können, um jegliches ideale Verhalten linearer Bewegung im Studio zu erreichen.
Eine konstante lineare Geschwindigkeit beibehalten
Um eine konstante lineare Geschwindigkeit zu erreichen und aufrechtzuerhalten, benötigt ein Objekt eine Kraft, die gegen alle entgegenwirkenden physikalischen Kräfte wirkt, die entweder die lineare Geschwindigkeit des Objekts verringern oder bewirken, dass das Objekt stationär bleibt. Wenn Sie beispielsweise möchten, dass ein Objekt eine lineare Geschwindigkeit von [0, 12, 0] im Studio hat, benötigen Sie genügend Kraft, damit das Objekt 12 Studs pro Sekunde entlang der Y-Achse in seiner Umgebung erreicht und aufrechterhält.
Die Menge an notwendiger Kraft hängt nicht nur von den entgegenwirkenden physikalischen Kräften innerhalb der Umgebung selbst wie Schwerkraft und Reibung ab, sondern auch vom Objekt selbst. Wenn Sie beispielsweise zwei Objekte derselben Form haben, die sich auf derselben Achse bewegen, benötigt das Objekt mit der größeren Masse mehr Kraft, um die gleiche lineare Beschleunigung zu erreichen.
Die folgenden Unterabschnitte verwenden Assemblies unterschiedlicher Formen und Größen, um Ihnen zu zeigen, wie man entweder ein gesamtes Objekt oder nur einen Teil des Objekts mit konstanter linearer Geschwindigkeit bewegt. Während Sie mit verschiedenen Eigenschaftswerten experimentieren, lernen Sie, wie Sie die maximale Menge an Kraft schätzen, die Sie für Baugruppen in Ihren eigenen Erlebnissen benötigen.
Verwenden Sie LinearVelocity Constraints
LinearVelocity Objekte sind eine Art von Mover Constraint, die Kraft auf eine gesamte Baugruppe ausüben, um eine konstante lineare Geschwindigkeit aufrechtzuerhalten. Indem Sie die Position der Baugruppe während ihrer Bewegung nicht auf eine Achse festlegen, hat die Baugruppe die Freiheit, sich zu drehen, während sie mit anderen Objekten im 3D-Raum kollidiert. Diese Art der Bewegung führt zu überraschenden Gameplay-Szenarien, die für die Spieler schwerer vorhersehbar sind.
Um die Baugruppe zu bewegen, muss das LinearVelocity Constraint wissen:
- Den Punkt und die positive oder negative Richtung, in die eine Kraft angewendet werden soll.
- Die Anzahl an Studs, die Sie möchten, dass sich die Baugruppe pro Sekunde bewegt.
- Die maximale Menge an Kraft, die die Engine anwenden kann, damit die Baugruppe die konstante lineare Geschwindigkeit erreicht.
Um diesen Prozess zu demonstrieren, werden Sie ein Seerosenblatt mit einem Anhang konfigurieren, auf den ein LinearVelocity Constraint verweist, um das Seerosenblatt mit 15 Studs pro Sekunde entlang der negativen X-Achse der Welt mit konstanter linearer Geschwindigkeit zu bewegen.

Anhang hinzufügen
Sie können den Punkt, an dem die Kraft angewendet werden soll, spezifizieren, indem Sie ein Attachment Objekt in die Baugruppe einfügen und dann die Position des Anhangs im 3D-Raum konfigurieren. Das Beispiel Bewegliche Objekte platzierte einen Anhang in der Mitte des Seerosenblatts, damit das Constraint das Mesh von dem Anhang entlang einer bestimmten Achse bewegen kann.
Anhänge enthalten visuelle Hilfsmittel, die Ihnen helfen, ihre Bewegungsachsen zu visualisieren. Der gelbe Pfeil zeigt die primäre Achse des Anhangs an, und der orange Pfeil zeigt die sekundäre Achse des Anhangs an. Obwohl keine der Bewegungsachsen die Bewegung des Seerosenblatts in den Schritten dieser Technik beeinflusst, ist es wichtig, diese visuellen Hilfsmittel für zukünftige Referenz zu verstehen, da sie Ihnen helfen können, das ideale Verhalten für verschiedene Arten von Constraints zu bestimmen, wie das PrismaticConstraint in der nächsten Technik.

Um einen Anhang hinzuzufügen:
Erweitern Sie im Explorer-Fenster den LinearVelocityExample Ordner und dann das untergeordnete LilyPad_DIY Modell.
Fügen Sie einen Anhang in das Pad Mesh ein.
- Fahren Sie mit der Maus über das Mesh und klicken Sie auf die ⊕-Schaltfläche. Ein Kontextmenü wird angezeigt.
- Wählen Sie im Menü Anhang einfügen. Der Anhang wird in der Mitte des Teils angezeigt.
- Benennen Sie den Anhang in MoveAttachment um.

Constraint konfigurieren
Jetzt, da Ihr Mesh einen festen Punkt hat, um das Seerosenblatt zu bewegen, können Sie die Eigenschaften eines LinearVelocity Constraints konfigurieren, um die Richtung und Stärke für die konstante lineare Geschwindigkeit, die Anzahl an Studs, die Sie möchten, dass sich das Mesh pro Sekunde bewegt, und die maximale Menge an Kraft zu spezifizieren, die die Engine anwenden kann, damit das Mesh eine konstante lineare Geschwindigkeit erreicht.
Die Beispiel-„Bewegliche Objekte“-Erfahrung wendet bis zu 5000 Rowtons konstanter Kraft an, um das Seerosenblatt mit 15 Studs pro Sekunde entlang der negativen X-Achse der Welt mit konstanter linearer Geschwindigkeit zu bewegen. Rowtons sind die primären physikalischen Einheiten von Roblox zur Messung von Kraft. Um auf die Roblox-Einheiten zu verweisen und wie sie in metrische Einheiten umgewandelt werden, siehe Roblox-Einheiten.
Um ein LinearVelocity Constraint zu konfigurieren:
Um das Constraint im Ansichtsfenster sichtbar zu machen, damit Sie seine lineare Richtung nachvollziehen können, aktivieren Sie Constraint-Details anzeigen im Ansicht-Menü von Studio.
Fügen Sie ein LinearVelocity Constraint in das Pad Mesh ein.
- Im Explorer-Fenster fahren Sie mit der Maus über das Mesh und klicken Sie auf das ⊕-Symbol. Ein Kontextmenü wird angezeigt.
- Wählen Sie im Kontextmenü LinearVelocity einfügen.
Weisen Sie den Anhang des Meshs dem neuen Constraint zu.
- Wählen Sie im Explorer-Fenster das Constraint aus.
- Im Eigenschaften-Fenster,
- Setzen Sie Attachment0 auf MoveAttachment.
- Setzen Sie MaxForce auf 5000, um bis zu 5000 Rowtons konstanter Kraft anzuwenden, um die Zielgeschwindigkeit zu erreichen.
- Lassen Sie RelativeTo auf World, um das Seerosenblatt relativ zur Position und Orientierung der Welt zu bewegen.
- Setzen Sie VelocityConstraint auf Line, um die Kraft entlang einer Linie vom Anhang zu beschränken.
- Setzen Sie LineDirection auf -1, 0, 0, um das Seerosenblatt entlang der negativen X-Achse der Welt zu bewegen. Beachten Sie, dass, wenn Sie diese Eigenschaft auf 1, 0, 0 setzen, sich das Seerosenblatt entlang der positiven X-Achse der Welt bewegen würde.
- Setzen Sie LineVelocity auf 15, um das Seerosenblatt mit 15 Studs pro Sekunde zu bewegen.

Überprüfen Sie, ob die Menge an Kraft, die Sie eingestellt haben, das Mesh mit 15 Studs pro Sekunde entlang der negativen X-Achse der Welt bewegt.
Wählen Sie den Run-Simulationsmodus aus dem Dropdown-Menü auf der Zwischenebene und klicken Sie auf die Play-Schaltfläche, um zu beginnen. Das Studio simuliert die Erfahrung an der aktuellen Kameraposition ohne Ihren Avatar im 3D-Raum.

Verwenden Sie PrismaticConstraint Constraints
PrismaticConstraint Objekte sind eine Art von mechanischen Constraints, die ein starres Gelenk zwischen zwei Anhängen bilden, wodurch deren übergeordnete Baugruppen relativ zueinander entlang einer Achse bewegt werden können. Indem Sie die Position beider Baugruppen auf eine einzige Achse sperren, kann jede Baugruppe nur dann rotieren, wenn sie sich gemeinsam in die gleiche Richtung dreht.
Diese Art der Bewegung führt zu stabilen Gameplay-Szenarien, die für die Spieler leichter vorhersehbar sind. Beispielsweise verwendet die Beispiel Bewegliche Objekte Erfahrung PrismaticConstraint Objekte, um Baumstammplattformen zu bewegen, die die Spieler verwenden können, um vorsichtig über einen riesigen Fluss zu gelangen.
Wenn Sie PrismaticConstraint.ActuatorType auf Motor setzen, übt dieses Constraint Kraft auf die beiden Anhänge aus mit dem Ziel, dass die Anhänge eine konstante lineare Geschwindigkeit erreichen und aufrechterhalten. Wenn Sie eine der übergeordneten Baugruppen der Anhänge ankern, bewegt die Kraft die nicht verankerte Baugruppe weiterhin mit konstanter linearer Geschwindigkeit, während die verankerte Baugruppe stationär bleibt.
Um die Baugruppe zu bewegen, muss das PrismaticConstraint Constraint wissen:
- Den Punkt und die positive oder negative Richtung, in die eine Kraft angewendet werden soll.
- Die Anzahl an Studs, die Sie möchten, dass sich die Anhänge pro Sekunde bewegen.
- Die maximale Menge an Kraft, die die Engine anwenden kann, damit die Anhänge und ihre übergeordneten Baugruppen eine konstante lineare Geschwindigkeit erreichen.
Um diesen Prozess zu demonstrieren, konfigurieren Sie eine Log-Baugruppe mit zwei Objekten, die Kindanhänge haben, auf die ein PrismaticConstraint verweist, um den Log mit 40 Studs pro Sekunde entlang der negativen X-Achse der Welt mit konstanter linearer Geschwindigkeit zu bewegen.

Anhänge konfigurieren
Sie können die Richtung, in die sich ein bestimmtes Objekt innerhalb einer Baugruppe bewegen soll, festlegen, indem Sie zwei Attachment Objekte in die Baugruppe einfügen und deren Ausrichtung und Orientierung im 3D-Raum konfigurieren. Die Beispiel Bewegliche Objekte Erfahrung richtet zwei Anhänge entlang der X-Achse der Welt in der Nähe der Position aus, an der der nicht verankerte Log mit dem verankerten Teil überlappt, und orientiert die primäre Achse jedes Anhangs in Richtung der negativen X-Achse der Welt.
Wenn Sie Ihr PrismaticConstraint im nächsten Abschnitt konfigurieren, bewegt sich der Log in Relation zum verankerten Teil. Mit anderen Worten, der Log wird sich vom stationären Teil entfernen, der sich nicht bewegen kann, weil er im 3D-Raum verankert ist.
Um Anhänge für das prismatic Constraint zu konfigurieren:
Erweitern Sie im Explorer-Fenster den PrismaticConstraintExample Ordner und dann das untergeordnete Log_DIY Modell.
Fügen Sie einen Anhang in das Log Mesh ein.
- Fahren Sie mit der Maus über das Mesh und klicken Sie auf die ⊕-Schaltfläche. Ein Kontextmenü wird angezeigt.
- Wählen Sie im Menü Anhang einfügen. Der Anhang wird in der Mitte des Teils angezeigt.
- Benennen Sie den Anhang in LogAttachment um.

Fügen Sie mit demselben Prozess einen Anhang in das Anchor-Teil ein und benennen Sie den Anhang AnchorAttachment um.

Verwenden Sie das View Selector-Werkzeug als Referenz für die Weltkoordinaten, um LogAttachment und AnchorAttachment zu drehen, bis die primäre Achse jedes Anhangs in Richtung der negativen X-Achse der Welt zeigt.

Positionieren Sie AnchorAttachment so, dass die beiden Anhänge auf der X-Achse der Welt ausgerichtet sind.

Constraint konfigurieren
Jetzt, da Ihre Anhänge auf derselben Achse ausgerichtet sind und in die Richtung zeigen, in die Sie möchten, dass sich der Log bewegt, können Sie die Eigenschaften eines PrismaticConstraint Constraints konfigurieren, um anzugeben, ob die Zielkonstante lineare Geschwindigkeit in die positive oder negative Richtung jeder primären Achse jedes Anhangs angewendet werden soll, die Anzahl an Studs, die Sie möchten, dass sich die Anhänge pro Sekunde bewegen, und die maximale Menge an Kraft, die die Engine anwenden kann, damit der Log eine konstante lineare Geschwindigkeit erreicht.
Obwohl Sie unterschiedliche Werte für Ihre eigenen Anwendungsfälle wählen können, wendet die Beispiel Bewegliche Objekte Erfahrung bis zu 50000 Rowtons konstanter Kraft an, um die Anhänge mit 40 radians pro Sekunde entlang der negativen X-Achse der Welt mit konstanter linearer Geschwindigkeit zu bewegen. Da der Anker-Attachment jedoch in einem verankerten Objekt ist, kann nur die Anhänge des Logs sich bewegen.
Um ein prismatic Constraint zu konfigurieren:
Fügen Sie ein PrismaticConstraint Objekt in das Log Mesh ein.
- Im Explorer-Fenster fahren Sie mit der Maus über das Mesh und klicken Sie auf das ⊕-Symbol. Ein Kontextmenü wird angezeigt.
- Wählen Sie im Kontextmenü PrismaticConstraint einfügen.
Weisen Sie die Anhänge des Logs dem neuen Constraint zu, damit sich der Log in Relation zu dem verankerten Block bewegt.
- Wählen Sie im Explorer-Fenster das Constraint aus.
- Im Eigenschaften-Fenster,
- Setzen Sie Attachment0 auf AnchorAttachment.
- Setzen Sie Attachment1 auf LogAttachment. Das Constraint wird im Ansichtsfenster angezeigt.

Wählen Sie im Explorer-Fenster das Constraint aus, und setzen Sie dann im Eigenschaften-Fenster:
- Setzen Sie ActuatorType auf Motor. Neue Eigenschaftenfelder werden angezeigt.
- Setzen Sie MotorMaxForce auf 50000, um bis zu 50000 Rowtons konstanter Kraft anzuwenden, um die Zielgeschwindigkeit zu erreichen.
- Setzen Sie Velocity auf 40, um den Log mit 40 Studs pro Sekunde zu bewegen.

Überprüfen Sie, ob die Menge an Kraft, die Sie eingestellt haben, den Log mit 40 Studs pro Sekunde entlang der negativen X-Achse der Welt bewegt.
Wählen Sie den Run-Simulationsmodus aus dem Dropdown-Menü auf der Zwischenebene und klicken Sie auf die Play-Schaltfläche, um zu beginnen. Das Studio simuliert die Erfahrung an der aktuellen Kameraposition ohne Ihren Avatar im 3D-Raum.

Einen anfänglichen linearen Kraft anwenden
Eine andere Möglichkeit, die lineare Geschwindigkeit eines Objekts zu ändern, besteht darin, einen Kraftimpuls anzuwenden. Nach dem Impuls bewegt sich das Objekt entweder langsamer, bis es stationär wird, wenn es entgegenwirkende Kräfte wie Reibung gibt, oder es bleibt mit konstanter linearer Geschwindigkeit in Bewegung, wenn keine entgegenwirkenden Kräfte vorhanden sind.
Diese Technik ist nützlich, um Objekte nach einem signifikanten Gameplay-Ereignis zu bewegen, wie z.B. einer Explosion oder einem kräftigen Zusammenstoß, da sie den Spielern unmittelbares Feedback gibt. Um dies zu demonstrieren, lehrt der folgende Unterabschnitt, wie man den Charakter eines Spielers nach oben in den Himmel katapultiert, wenn er mit einem Sprungpolster mit einem anfänglichen Impuls kollidiert, den Sie mit neuen Werten anpassen können, um Ihre eigenen Gameplay-Anforderungen zu erfüllen.
Verwenden Sie ApplyImpulse
Die Methode ApplyImpulse wendet Kraft auf eine gesamte Baugruppe an, um eine anfängliche lineare Geschwindigkeit zu erhalten, bevor sie bei entgegenwirkenden Kräften langsamer wird und stoppt. Um die Baugruppe zu bewegen, muss die Methode wissen:
- Die Baugruppe, die bewegt werden soll.
- Die Achse, auf die Kraft angewendet wird, um eine anfängliche lineare Geschwindigkeit zu erreichen.
- Die Menge an Kraft, die auf jede Achse angewendet werden soll.
Sie können all diese Werte in einem Skript definieren. Zum Beispiel definiert das Beispielskript die Baugruppe als das Humanoid Objekt des Spielers, dann wird ein Impuls von 2500 Rowton-Sekunden angewendet, um den Spieler entlang der positiven Y-Achse der Welt nach oben zu katapultieren. Beachten Sie, dass Spieler-Charaktere unterschiedliche Mengen an Masse haben, sodass Sie diese Kraft möglicherweise erhöhen und ausgleichen müssen, um jeden Spieler zu katapultieren, ohne Spieler-Charaktere mit geringeren Massen zu hoch zu katapultieren.
Um eine Baugruppe mit ApplyImpulse zu bewegen:
Erweitern Sie im Explorer-Fenster den ApplyImpulseExample Ordner und dann das untergeordnete JumpPad_DIY Modell.
Fügen Sie ein Skript in das JumpPad Teil ein.
- Fahren Sie mit der Maus über das Teil und klicken Sie auf die ⊕-Schaltfläche. Ein Kontextmenü wird angezeigt.
- Wählen Sie im Menü Skript einfügen. Der Anhang wird in der Mitte des Teils angezeigt.
- Benennen Sie das Skript in JumpScript um.
Ersetzen Sie den Standardcode durch den folgenden Code:
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)