WorldRoot

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar

Diese Basisklasse bietet eine API für jede Instanz, die für die Bearbeitung 3D-räumlicher Anfragen und Simulation gedacht ist, wie Workspace und WorldModel.

Zusammenfassung

Eigenschaften

Eigenschaften von Model übernommen
  • Plugin-Sicherheit
    Parallel lesen

    Legt das Detaillevel auf dem Modell für Erlebnisse mit aktiviertem Instanzstreaming fest.

  • Steuert das Modellstreamingverhalten auf Models, wenn Instanzstreaming aktiviert ist.

  • Parallel lesen

    Der primäre Teil des Model , oder nil wenn nicht explizit festgelegt.

  • Nicht repliziert
    Nicht skriptfähig
    Parallel lesen

    Eigenschaft nur für den Editor, mit der das Modell um seinen Pivot herum skaliert wird. Das Festlegen dieser Eigenschaft bewegt die Skalierung, als ob Model/ScaleTo aufgerufen wurde.

  • Nicht repliziert
    Parallel lesen

    Bestimmt, wo sich der Pivot eines , der keine festgelegte hat, befindet.

Eigenschaften von PVInstance übernommen

Methoden

Methoden von Model übernommen
  • AddPersistentPlayer(playerInstance : Player):()

    Setzt dieses Modell für den angegebenen Spieler dauerhaft. ModelStreamingMode muss auf PersistentPerPlayer gesetzt werden, damit sich das Verhalten ändert, als Ergebnis der Ergänzung.

  • Gibt eine Beschreibung eines Volumens zurück, das alle Teile eines Modells enthält.

  • Gibt die Größe der kleinsten Bindungsbox zurück, die alle BaseParts in der Model enthält, ausgerichtet auf die Model.PrimaryPart, wenn sie festgelegt ist.

  • Gibt alle Player Objekte zurück, für die dieses Modellobjekt persistent ist.Das Verhalten unterscheidet sich je nachdem, ob diese Methode von einem Script oder einem LocalScript aufgerufen wird.

  • Gibt die kanonische Skala des Modells zurück, die standardmäßig auf 1 für neu erstellte Modelle gesetzt wird und sich ändern wird, wenn sie über Model/ScaleTo skaliert wird.

  • MoveTo(position : Vector3):()

    Bewegt den PrimaryPart an die angegebene Position. Wenn kein primärer Teil angegeben wurde, wird der Wurzelteil des Modells verwendet.

  • RemovePersistentPlayer(playerInstance : Player):()

    Macht dieses Modell für den angegebenen Spieler nicht mehr persistent.ModelStreamingMode muss auf PersistentPerPlayer gesetzt werden, damit sich das Verhalten ändert, als Ergebnis der Entfernung.

  • ScaleTo(newScaleFactor : number):()

    Legt den Skalierungsfaktor des Modells fest, passt die Größe und den Standort aller Nachkommen-Instanzen an, sodass sie diesen Skalierungsfaktor im Verhältnis zu ihrer ursprünglichen Größe und ihrem Standort haben, als der Skalierungsfaktor 1 war.

  • TranslateBy(delta : Vector3):()

    Verschiebt eine Model durch den angegebenen Vector3 Offset, wobei die Orientierung des Modells beibehalten wird.Wenn ein anderes BasePart oder Terrain bereits an der neuen Position existiert, wird der Model das zugeordnete Objekt überschreiben.

Methoden von PVInstance übernommen

Eigenschaften

Methoden

ArePartsTouchingOthers

Sind Teile berühren andere gibt wahr zurück, wenn mindestens einer der angegebenen BasePart andere Teile berührt.Zwei Teile gelten als "berührend", wenn sie innerhalb der Abstandsschwelle sind, overlapIgnored .

Wenn keine Teile bereitgestellt werden, wird false zurückgegeben.

Parameter

partList: Instances

Eine Liste von Teilprüfungen, um zu sehen, ob Teile in der Liste irgendwelche Teile berühren, die nicht in der Liste sind.

Standardwert: ""
overlapIgnored: number

Die Teilüberschneidungsgrenze in Studs, die ignoriert wird, bevor Teile als berührend angesehen werden.

Standardwert: 0.000199999995

Rückgaben

Wahr, wenn und nur wenn irgendein Teil von parts in partList irgendein anderes Teil berührt (Teile, die nicht in der Teilliste sind). Falsh, wenn keine Teile übergeben werden.

Code-Beispiele

The code block below demonstrates how to use WorldRoot:ArePartsTouchingOthers() to check if parts in a list are touching any parts in the workspace not in the list.

First the script creates two square parts that overlap 1 stud, Part1 and Part2. Then, it prints the value returned by ArePartsTouchingOthers() when Part1 is passed in partList at three different overlap values: 0, 0.999, and 1. The first two times ArePartsTouchingOthers() is called return false because the overlap values are less than the distance that Part1 and Part2 overlap. The third call returns true because the overlap value is equal to the distance that the parts overlap.

Checking for Touching Parts

local part1 = Instance.new("Part")
part1.Name = "Part1"
part1.Anchored = true
part1.Transparency = 0.5
part1.Color = Color3.fromRGB(185, 100, 38)
part1.Size = Vector3.new(2, 2, 2)
part1.Position = Vector3.new(0, 4, 0)
part1.Parent = workspace
local part2 = Instance.new("Part")
part2.Name = "Part2"
part2.Anchored = true
part2.Transparency = 0.5
part2.Color = Color3.fromRGB(200, 10, 0)
part2.Size = Vector3.new(2, 2, 2)
part2.Position = Vector3.new(0, 5, 0)
part2.Parent = workspace
local partList = { part1 }
print(workspace:ArePartsTouchingOthers(partList, 0)) -- True
print(workspace:ArePartsTouchingOthers(partList, 0.999)) -- True
print(workspace:ArePartsTouchingOthers(partList, 1)) -- False

Blockcast

Parallel schreiben

Wirft eine Blockform in eine bestimmte Richtung und gibt die erste Kollision mit einer BasePart oder Terrain Zelle zurück.Dies entspricht der Art und Weise, wie WorldRoot:Raycast() einen linearen Strahl in eine Richtung wirft, um eine Kollision zu finden, aber er verwendet eine 3D-Form statt eines Strahls.

Im Gegensatz zu WorldRoot:GetPartsInPart() erkennt diese Methode nicht BaseParts, dass zunächst die Form überschneidet.

Wenn ein Treffer erkannt wird, wird ein RaycastResult zurückgegeben, der die Trefferinformationen enthält.Die Eigenschaft Distance repräsentiert die Entfernung, die die Form zurücklegen muss, um einen Treffer zu finden, und die Eigenschaft Position repräsentiert den Knotenpunkt, der den Treffer verursacht.

Diese Methode wirft einen Fehler, wenn sie ungültige CFrame , Größen- oder Richtungs输入 übergeben wird.

Parameter

cframe: CFrame

Die ursprüngliche Position und Drehung der Gießblockform.

Standardwert: ""
size: Vector3

Die Größe des Gussblockformats in Studs. Die maximale Größe beträgt 512 Studs.

Standardwert: ""
direction: Vector3

Richtung des Shapecasts, mit der Größe, die die maximale Entfernung darstellt, die die Form zurücklegen kann. Die maximale Entfernung beträgt 1024 Klötze.

Standardwert: ""
Standardwert: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Rückgaben

Enthält das Ergebnis der Shapecast-Operation oder nil, wenn keine geeignete BasePart oder Terrain Zelle getroffen wurde.

Code-Beispiele

Casts a block and returns the first collision with a BasePart or Terrain. Prints the properties of the RaycastResult if a result was hit.

Blockcasting

local Workspace = game:GetService("Workspace")
local function castBlock()
-- The initial position and rotation of the cast block shape
local originCFrame = CFrame.new(Vector3.new(0, 50, 0))
-- The size of the cast block shape
local size = Vector3.new(6, 3, 9)
-- The direction the block is cast in
local direction = -Vector3.yAxis
-- The maximum distance of the cast
local distance = 50
-- Cast the block and create a visualization of it
local raycastResult = Workspace:Blockcast(originCFrame, size, direction * distance)
if raycastResult then
-- Print all properties of the RaycastResult if it exists
print(`Block intersected with: {raycastResult.Instance:GetFullName()}`)
print(`Intersection position: {raycastResult.Position}`)
print(`Distance between block's initial position and result: {raycastResult.Distance}`)
print(`The normal vector of the intersected face: {raycastResult.Normal}`)
print(`Material hit: {raycastResult.Material.Name}`)
else
print("Nothing was hit")
end
end
-- Continually cast a block every 2 seconds
while true do
castBlock()
task.wait(2)
end

BulkMoveTo

()

Diese Funktion bewegt eine Tabelle von BaseParts zu einer Tabelle von CFrames ohne notwendigerweise die Standard-Ereignisse Changed zu aktivieren.Dies bietet einen sehr schnellen Weg, um eine große Anzahl von Teilen zu bewegen, da Sie nicht die Kosten für einzelne Eigenschaftssätze für jedes einzelne Teil zahlen müssen.

Das dritte Argument ermöglicht es dir, die Bewegungsoperation weiter zu optimieren.Standardmäßig wird das Ereignis von jedem Teil für , und ausgelöst.Wenn du jedoch FireCFrameChanged als drittes Argument spezifizierst, wird nur das Changed-Ereignis für die CFrame-Eigenschaft initiieren.

Beachten Sie, dass Sie diese Funktion nur verwenden sollten, wenn Sie sicher sind, dass die Bewegung von Teilen ein Engpass in Ihrem Codesist.Die einfache Festlegung der CFrame Eigenschaft von einzelnen Teilen und verschweißten Modellen ist in der Mehrheit der Fälle schnell genug.

Parameter

partList: Instances
Standardwert: ""
cframeList: Array
Standardwert: ""
Standardwert: "FireAllEvents"

Rückgaben

()

GetPartBoundsInBox

Instances
Parallel schreiben

WorldRoot:GetPartBoundsInBox() gibt eine reihe von teilen zurück, deren grenzboxen eine box überschneiden, deren lautstärke mit dem angegebenen zentrum ( CFrame ) und größe ( Vector3 ) beschrieben wird.

Wie betont, berücksichtigt diese räumliche Abfragemethode effizient die Lautstärke der Bindungsboxen der Teile anstatt ihr tatsächliches besetztes Volumen.Dies kann bei der Betrachtung von Zylindern, Kugeln, Unionen und MeshParts, die keine Blockformen haben, wichtig sein.Für Fälle, in denen Genauigkeit besonders wichtig ist, verwende stattdessen WorldRoot:GetPartsInPart() oder filtere die Ergebnisse dieser Methode selbst weiter.

Diese Methode verwendet ein -Objekt, um wiederverwendbare Teile der räumlichen Abfragezu beschreiben, wie eine Inklusions- oder Ausschlussliste, die maximale Anzahl von Teilen, die Abfragewerden sollen, die zu verwendende Kollisionsgruppe und ob die Anfrage den Wert eines überschnittenen Teils über seinen Wert überschreitet.

Parameter

cframe: CFrame

Der Standort des Zentrums des gegebenen Kistenvolumens, das abgefragt werden soll.

Standardwert: ""
size: Vector3

Die Größe des gegebenen Kistenvolumens, das abgefragt werden soll.

Standardwert: ""
overlapParams: OverlapParams

Enthält wiederverwendbare Teile der räumlichen Such参数.

Standardwert: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Rückgaben

Instances

Ein Array von BaseParts, das der räumlichen Abfrageentsprach.

GetPartBoundsInRadius

Instances
Parallel schreiben

WorldRoot:GetPartBoundsInRadius() gibt eine reihe von teilen zurück, deren bindungsboxen eine kugel überschneiden, deren volumen mit dem angegebenen zentrum ( Vector3 ) und radius beschrieben wird.

Wie betont, berücksichtigt diese räumliche Abfragemethode effizient die Lautstärke der Bindungsboxen der Teile anstatt ihr tatsächliches besetztes Volumen.Dies kann bei der Betrachtung von Zylindern, Kugeln, Unionen und MeshParts, die keine Blockformen haben, wichtig sein.Für Fälle, in denen Genauigkeit besonders wichtig ist, verwende stattdessen WorldRoot:GetPartsInPart() oder filtere die Ergebnisse dieser Methode selbst weiter.

Diese Methode verwendet ein -Objekt, um wiederverwendbare Teile der räumlichen Abfragezu beschreiben, wie eine Inklusions- oder Ausschlussliste, die maximale Anzahl von Teilen, die Abfragewerden sollen, die zu verwendende Kollisionsgruppe und ob die Anfrage den Wert eines überschnittenen Teils über seinen Wert überschreitet.

Parameter

position: Vector3

Der Standort des Zentrums der angegebenen Kugelmenge, die abgefragt werden soll.

Standardwert: ""
radius: number

Der Radius des angegebenen Kugelvolumens, das abgefragt werden soll.

Standardwert: ""
overlapParams: OverlapParams

Enthält wiederverwendbare Teile der räumlichen Such参数.

Standardwert: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Rückgaben

Instances

Ein Array von BaseParts, das der räumlichen Abfrageentsprach.

GetPartsInPart

Instances
Parallel schreiben

WorldRoot:GetPartsInPart() gibt eine Reihe von Teilen zurück, deren besetzter Raum mit dem angegebenen Teil geteilt wird (die existieren muss im selben WorldRoot wie die zu abfragenden Teile).Diese Methode kann anstelle von BasePart:GetTouchingParts() verwendet werden und ist im Allgemeinen eine bessere Wahl.

Wie bereits erwähnt, berücksichtigt diese räumliche Abfragemethode die genaue Lautstärke , die vom angegebenen Teil mit einer vollständigen geometrischen überprüfenverwendet wird.Als Beispiel passt ein abgeflachtes/hohles Teil nicht zu abgefragten Teilen in ihm, es sei denn, es überlappt tatsächlich ein solches Teil oder berührt es.Für einfachere Volumen, erwägen Sie die Verwendung von WorldRoot:GetPartBoundsInBox() oder WorldRoot:GetPartBoundsInRadius(), da sie weniger genau sind, aber effizienter arbeiten.

Diese Methode verwendet ein -Objekt, um wiederverwendbare Teile der räumlichen Abfragezu beschreiben, wie eine Inklusions- oder Ausschlussliste, die maximale Anzahl von Teilen, die Abfragewerden sollen, die zu verwendende Kollisionsgruppe und ob die Anfrage den Wert eines überschnittenen Teils über seinen Wert überschreitet.

Parameter

part: BasePart

Das Teil, dessen Lautstärke gegen andere Teile überprüft werden soll.

Standardwert: ""
overlapParams: OverlapParams

Enthält wiederverwendbare Teile der räumlichen Such参数.

Standardwert: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Rückgaben

Instances

Ein Array von BaseParts, das der räumlichen Abfrageentsprach.

IKMoveTo

()
Plugin-Sicherheit

Diese Funktion bewegt das angegebene Teil an die angegebene Stelle via umgekehrte Kinematik, anstatt es direkt dorthin zu bewegen, um sicherzustellen, dass alle Gelenke, constraints oder Kollisionen, an denen das Teil teilnimmt, physisch zufrieden bleiben.Derzeit ist diese Funktion nur in Studio verfügbar bis plugins, da sie derzeit mit der Physik eines laufenden Spiels kollidiert.

Starrigkeit übersetzen ist eine Zahl zwischen 0 und 1, die angibt, wie aggressiv die Position des Teils mit der Position des Ziels-CFrame abgestimmt werden soll. Die Steifigkeit drehen ist eine Zahl zwischen 0 und 1, die angibt, wie aggressiv die Rotation des Teils mit der Rotation des Ziels-CFRames abgestimmt werden soll.

Zum Beispiel:

  • Wenn die Übersetzungssteifigkeit und die Rotationssteifigkeit beide gleich 1 sind, wird das Teil genau auf die Ziel-CFRame verschoben, unabhängig davon, welche physischen Einschränkungen es gibt.
  • Wenn die Übersetzungssteifigkeit und die Rotationssteifigkeit beide gleich 0,5 sind, versucht das Teil, sich genau auf die Ziel-CFRame zu bewegen, aber es wird durch physische Einschränkungen daran gehindert.
  • Wenn die Übersetzungssteifigkeit und die Rotationssteifigkeit beide gleich 0 sind, wird der Ziel-CFRame ignoriert und die physischen Einschränkungen für das Objekt an der Stelle gelöst, an der es sich befand.

Parameter

part: BasePart

Das zu bewegende Teil.

Standardwert: ""
target: CFrame

Der Ort, an den das angegebene Teil verschoben werden soll.

Standardwert: ""
translateStiffness: number

Eine Zahl zwischen 0 und 1, die angibt, wie aggressiv die Position des Teils zum Zielteil passt CFrame .

Standardwert: 0.5
rotateStiffness: number

Eine Zahl zwischen 0 und 1, die angibt, wie aggressiv die Rotation des Teils mit der Rotationspart des Ziels übereinstimmt CFrame.

Standardwert: 0.5
collisionsMode: Enum.IKCollisionsMode

Ermöglicht es dir, anzugeben, welche Objekte durch die physische Auflösung beeinflusst werden sollen.

Standardwert: "OtherMechanismsAnchored"

Rückgaben

()
Parallel schreiben

Wirft einen Strahl mit einer Herkunft, Richtung und optionalen RaycastParams aus.Wenn es eine berechtigte BasePart oder Terrain Zelle findet, wird eine RaycastResult zurückgegeben, die die Ergebnisse der Operation enthält.Wenn kein RaycastParams-Objekt bereitgestellt wird, werden die Standardwerte verwendet (alle Teile werden berücksichtigt und Terrain Wasser wird nicht ignoriert).

Beachten Sie, dass die Länge (Größe) des richtungsweisenden Vektors wichtig ist, da Objekte/Terrain weiter entfernt als ihre Länge nicht getestet werden.Wenn du ein CFrame verwendest, um die Strahlkomponenten zu erstellen, erwäge die Verwendung von CFrame.LookVector als richtungsvektor und multipliziere ihn mit der gewünschten Länge, wie im folgenden Beispiel gezeigt.Die maximale Länge des Richtungsvektors beträgt 15.000 Stollen.

Diese Methode verwendet nicht ein Ray Objekt, aber ihre Herkunfts- und Richtungsanteile können von Ray.Origin und Ray.Direction ausgeliehen werden.

Parameter

origin: Vector3

Der Ursprungspunkt des Strahls.

Standardwert: ""
direction: Vector3

Der richtungsvektor des Strahls. Beachten Sie, dass die Länge dieses Vektors wichtig ist, da Teile/Terrain weiter entfernt als seine Länge nicht getestet werden.

Standardwert: ""
raycastParams: RaycastParams

Ein Objekt, das zur Spezifizierung der Trefferelegibilität in der Raycast-Operation verwendet wird.Wenn nicht bereitgestellt, werden Standardwerte verwendet, wenn alle Teile betrachtet werden und Terrain Wasser nicht ignoriert wird.

Standardwert: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Rückgaben

Enthält die Ergebnisse einer Raycast-Operation oder nil, wenn keine geeignete BasePart oder Terrain Zelle getroffen wurde.

Code-Beispiele

Casts a ray and returns the first collision with a BasePart or Terrain. Prints the properties of the RaycastResult if a result was hit.

Raycasting

local Workspace = game:GetService("Workspace")
local function castRay()
-- The origin point of the ray
local originPosition = Vector3.new(0, 50, 0)
-- The direction the ray is cast in
local direction = -Vector3.yAxis
-- The maximum distance of the ray
local distance = 50
-- Cast the ray and create a visualization of it
local raycastResult = Workspace:Raycast(originPosition, direction * distance)
if raycastResult then
-- Print all properties of the RaycastResult if it exists
print(`Ray intersected with: {raycastResult.Instance:GetFullName()}`)
print(`Intersection position: {raycastResult.Position}`)
print(`Distance between ray origin and result: {raycastResult.Distance}`)
print(`The normal vector of the intersected face: {raycastResult.Normal}`)
print(`Material hit: {raycastResult.Material.Name}`)
else
print("Nothing was hit")
end
end
-- Continually cast a ray every 2 seconds
while true do
castRay()
task.wait(2)
end

Shapecast

Parameter

part: BasePart
Standardwert: ""
direction: Vector3
Standardwert: ""
Standardwert: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Rückgaben

Spherecast

Parallel schreiben

Wirft eine kugelförmige Form in eine bestimmte Richtung und gibt die erste Kollision mit einer BasePart oder Terrain Zelle zurück.Dies entspricht der Art und Weise, wie WorldRoot:Raycast() einen linearen Strahl in eine Richtung wirft, um eine Kollision zu finden, aber er verwendet eine 3D-Form statt eines Strahls.

Im Gegensatz zu WorldRoot:GetPartsInPart() erkennt diese Methode nicht BaseParts, dass zunächst die Form überschneidet.

Wenn ein Treffer erkannt wird, wird ein RaycastResult zurückgegeben, der die Trefferinformationen enthält.Die Eigenschaft Distance repräsentiert die Entfernung, die die Form zurücklegen muss, um einen Treffer zu finden, und die Eigenschaft Position repräsentiert den Knotenpunkt, der den Treffer verursacht.

Diese Methode wirft einen Fehler, wenn ungültige Radius- oder Richtungseingaben übergeben werden.

Parameter

position: Vector3

Die ursprüngliche Position der geschweiften kugelförmigen Form.

Standardwert: ""
radius: number

Der Radius der gegossenen kugelförmigen Form in Stollen. Der maximale Radius beträgt 256 Stollen.

Standardwert: ""
direction: Vector3

Richtung des Shapecasts, mit der Größe, die die maximale Entfernung darstellt, die die Form zurücklegen kann. Die maximale Entfernung beträgt 1024 Klötze.

Standardwert: ""
Standardwert: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Rückgaben

Enthält das Ergebnis der Shapecast-Operation oder nil, wenn keine geeignete BasePart oder Terrain Zelle getroffen wurde.

Code-Beispiele

Casts a sphere and returns the first collision with a BasePart or Terrain. Prints the properties of the RaycastResult if a result was hit.

Spherecasting

local Workspace = game:GetService("Workspace")
local function castSphere()
-- The initial position of the cast spherical shape
local originPosition = Vector3.new(0, 50, 0)
-- The radius of the cast spherical shape in studs
local radius = 10
-- The direction the sphere is cast in
local direction = -Vector3.yAxis
-- The maximum distance of the cast
local distance = 50
-- Cast the sphere and create a visualization of it
local raycastResult = Workspace:Spherecast(originPosition, radius, direction * distance)
if raycastResult then
-- Print all properties of the RaycastResult if it exists
print(`Sphere intersected with: {raycastResult.Instance:GetFullName()}`)
print(`Intersection position: {raycastResult.Position}`)
print(`Distance between sphere's initial position and result: {raycastResult.Distance}`)
print(`The normal vector of the intersected face: {raycastResult.Normal}`)
print(`Material hit: {raycastResult.Material.Name}`)
else
print("Nothing was hit")
end
end
-- Continually cast a sphere every 2 seconds
while true do
castSphere()
task.wait(2)
end

StepPhysics

()
Plugin-Sicherheit

Fordert die Simulation für Teile in der Welt vorwärts basierend auf einem angegebenen Zeitincrement und einer optionalen Reihe von BasePart.Wenn eine Reihe von Teilen angegeben wird, werden nur diese Teile simuliert und alle anderen Teile in der Welt als verankert behandelt.Wenn dieses Argument ausgelassen wird, werden alle Teile der Welt in die Simulation aufgenommen.Der angegebene Zeitincrement kann eine positive Zahl sein, wobei größere Werte die Laufzeit der Funktion erhöhen.Abhängig vom Wert des Zeitinkrements kann das physikalische System es in mehrere einzelne Schritte unterteilen, um die Genauigkeit und Stabilität der Simulation zu gewährleisten.Selbst wenn die Funktion mehrere Substufen ausführt, werden die Ergebnisse der Simulation erst gesehen, wenn die Funktion abgeschlossen ist.Um die einzelnen Schritte einer Simulation visuell darzustellen, kann die Funktion einmal pro RenderSchritt über das Ereignis RunService.RenderStepped aufgerufen werden.

Parameter

dt: number

Die Menge der Zeit, die simuliert wird. Dieses Argument muss eine positive Zahl sein. Größere Werte erhöhen die Laufzeit dieser Funktion.

Standardwert: ""
parts: Instances

Optionales Array von Teilen, die simuliert werden. Dieses Set muss Instanzen enthalten, die vom Typ BasePart sind; alle anderen Arten werden ignoriert.

Standardwert: "{}"

Rückgaben

()

Code-Beispiele

Simulates the parts in the workspace for a fixed period of time by calling the StepPhysics function once per frame until a specified time has elaspsed.

StepPhysics

local RunService = game:GetService("RunService")
-- Optional array of parts to simulate; otherwise all parts will be simulated
local partsToSimulate = {
workspace.Part,
}
local function simulateParts(duration)
local time = 0.0
local stepJob
stepJob = RunService.RenderStepped:Connect(function(dt)
if time + dt > duration then
dt = duration - time
end
workspace:StepPhysics(dt, partsToSimulate)
time = time + dt
if time >= duration then
stepJob:Disconnect()
end
end)
end
-- Simulate workspace parts for 5 seconds, stepping the parts once per frame
simulateParts(5.0)

Ereignisse