WorldRoot
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Diese Basis-Klasse bietet eine API für jede Instanz, die 3D-Räumliche Anfragen und Simulation für jede Art von Anwendungsfall verwalten soll, wie z. B. Workspace und WorldModel.
Zusammenfassung
Eigenschaften
Eigenschaften von Model übernommenSetzt die Detaillierungsstufe auf dem Modell für Erlebnisse mit eingeschaltetem Instanz- Streaming.
Steuert das Modell- Streaming-Verhalten auf Models, wenn das Instanz- Streaming aktiviert ist.
Der Hauptteil des Model , oder nil wenn nicht explizit festlegen.
Editor-only-Eigenschaft, die verwendet wird, um das Modell um seine Achse zu skalieren. Wenn Sie diese Eigenschaft einstellen, bewegt sich die Skala, als ob Model/ScaleTo auf sie aufgerufen wurde.
Bestimmt, wo sich der Pivot eines Model , der nicht hat, befindet.
Methoden
Gibt zurück, wenn eines der gegebenen BasePart irgendeinen anderen Teil berührt.
Wirft einen Block in eine bestimmte Richtung und gibt ein RaycastResult zurück, wenn die Form einen BasePart oder Terrain Zellen berührt.
Bewegt eine Tabelle von BaseParts zu einer Tabelle von CFrames .
Rückgibt ein Array von Teilen, deren Umschlagkisten eine bestimmte Auswahlboxüberlappen.
Rückgibt ein Array von Teilen, deren Umschlagungskisten eine bestimmte Kugel überschneiden.
Gibt eine Reihe von Teilen zurück, deren besetzter Platz mit dem besetzten Teil geteilt wird.
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):void
Bewegt den angegebenen Teil an den angegebenen Ort via umgekehrte Kinematik, anstatt ihn direkt zu verschieben, um sicherzustellen, dass alle Verbindungen, Einschränkungen oder Kollisionen, an denen dieser Teil teilnimmt, physisch zufrieden bleiben.
Wirft einen Strahl mit einer Quelle, Richtung und optionalem RaycastParams und gibt dann eine RaycastResult zurück, wenn ein elegibles Objekt oder Terrain den Strahl interessiert.
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
Wirft eine kugelförmige Form in eine bestimmte Richtung und gibt ein RaycastResult zurück, wenn die Form einen BasePart oder Terrain Zell berührt.
Verbessert die Simulation für Teile in der Welt basierend auf einem bestimmten Zeit-Inkrement und einer optionalen Reihe von BaseParts.
Setzt dieses Modell so ein, dass es für den angegebenen Spieler:indauerhaft ist. Model.ModelStreamingMode muss so eingestellt sein, dass PersistentPerPlayer für das Verhalten als Ergebnis der Zugabe geändert wird.
Bietet eine Beschreibung eines Volumes, das alle Teile eines Modells enthält.
Gibt die Größe der kleinsten Kernkiste zurück, die alle BaseParts in der Model enthält, mit dem Alignment auf die Model.PrimaryPart , wenn es festlegenist.
Rückgibt alle Player -Objekte, für die dieses Modell-Objekt persistent ist. Das Verhalten variiert basierend darauf, ob diese Methode aus einem Script oder einem LocalScript aufgerufen wird.
Gibt die Skalierung des Modells zurück, die standardmäßig 1 für neu erstellte Modelle beträgt und sich ändern wird, wenn sie über Model/ScaleTo skaliert wird.
Bewegt den PrimaryPart an die angegebene Position. Wenn eine Primärteil nicht angegeben wurde, wird die Wurzelteil des Modells verwendet.
Macht dieses Modell für bestimmten Spieler:innicht mehr persistent. Model.ModelStreamingMode muss auf PersistentPerPlayer eingestellt sein, damit das Verhalten als Ergebnis der Entfernung geändert wird.
Setzt den Skalierungsfaktor des Modells, um die Größe und den Standort aller Nachkommen zuzuschneiden, damit sie diesen Skalierungsfaktor in Relation zu ihren ursprünglichen Größen und Standorten haben, wenn der Skalierungsfaktor 1 war.
Verschiebt ein Model durch den angegebenen Vector3 Versatz, wobei die Orientierung des Modells erhalten bleibt. Wenn ein weiterer BasePart oder 2>Class.Terrain2> bereits in der neuen Position existiert, wird das 5>Class.Model5> mit dem überschriebenen 8>Class.Model8> kollidieren.
Erhalten Sie die Ausrichtung einer PVInstance.
Transformiert die PVInstance zusammen mit all ihren Nachkommen PVInstances, wodurch der Pivot jetzt an der angegebenen CFrame liegt.
Eigenschaften
Methoden
ArePartsTouchingOthers
ArePartsTouchingOthers gibt zurück, wenn mindestens ein der gegebenen BasePart berührt irgendeinen anderen Teil. Zwei Teile werden als "berührend" betrachtet, wenn sie innerhalb der Distanzschwelle sind, overlapIgnored.
Wenn keine Teile angegeben werden, wird false zurückgegeben.
Parameter
Eine Liste von Teilen, die prüfen, ob ein Teil in der Liste irgendein Teil berührt, das nicht in der Liste ist.
Der Teilbereich-Schwellenwert in Studs, der ignoriert wird, bevor Teile berührt werden.
Rückgaben
Code-Beispiele
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
Casts einen Block in einer bestimmten Richtung und gibt die erste Kollision mit einem BasePart oder Terrain-Zell ab. Dies ist ähnlich, wie WorldRoot:Raycast() einen linearen Strahl in eine Richtung kastiert, um eine Kollision zu finden, aber es verwendet eine 3D-Form anstelle eines Strahls.
Anders als WorldRoot:GetPartsInPart() , entdeckt diese Methode nicht BaseParts, die ursprünglich eine Form bildet.
Wenn ein Treffer erkannt wird, wird eine RaycastResult mit den Trefferinformationen zurückgegeben. Die Distance Eigenschaft repräsentiert die Distanz, die die Form zu finden muss, und die Position Eigenschaft repräsentiert den Interektionspunkt, der den Treffer verursacht.
Diese Methode gibt einen Fehler zurück, wenn sie ungültige CFrame , Größe oder Richtungseingaben erhalten hat.
Parameter
Die anfängliche Position und Rotation des Cast-Blocks.
Die Größe des Cast-Blocks in Studs. Die maximale Größe beträgt 512 Studs.
Richtung des Shapecast, mit der Größe, die die Form repräsentiert, die maximale Entfernung, die die Form reisen kann. Die maximale Entfernung beträgt 1024 Studs.
Rückgaben
Code-Beispiele
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 das Notwendige zu tun, um die Standard-Eigenschaft Changed aufzurufen. Dies bietet einen sehr schnellen Weg, um große Anzahl von Teilen zu bewegen, da Sie nicht die Kosten für separate Eigenschaftssätze für jed
Das dritte Argument ermöglicht es Ihnen, die Bewegungsoperation weiter zu optimieren. Standardmäßig wird das Ereignis Class.Object.Changed|Changed</
Beachten Sie, dass Sie diese Funktion nur verwenden sollten, wenn Sie sicher sind, dass die Bewegung der Teile ein Verbottungshemd in Ihrem Codesist. Einfach das Eigenschaft _ CFrame der einzelnen Teile und modellierten Modelle einzustellen, ist in den meisten Fällen schnell genug.
Parameter
Rückgaben
GetPartBoundsInBox
WorldRoot:GetPartBoundsInBox() gibt eine Reihe von Teilen zurück, deren Kistenkanten eine Box mit der Volumenbeschreibung mit dem angegebenen Center ( CFrame ) und Größe ( 0> Datatype.Vector30> ) übereinstimmt.
Wie betont, berücksichtigt dieser Raum-Abfrage-Prozess effizient die Volumen der Teile-Kontrollkisten, nicht aber ihre tatsächliche Volumen. Dies kann bei Zylindern, Kugeln, Verbindungen und MeshParts , bei denen nicht blockförmige Formen verwendet werden, wichtig sein. Für Fälle, in denen Genauigkeit besonders wichtig ist, verwenden Sie stattdessen Class.
Diese Methode verwendet ein OverlapParams -Objekt, um wiederverwendbare Teile der Abfragezu beschreiben, z. B. eine Inklusions- oder Ausklusionsliste, die maximale Anzahl von Teilen, die abgerufen werden sollen, und ob die Anfrage den Wert Collision-Gruppe über ihrem Wert Klassen-
Parameter
Der Standort des Zentrums der angegebenen Box-Volumen, die abgerufen werden sollen.
Die Größe des angegebenen Box-Volumens, die abgerufen wird.
Enthält wiederverwendbare Teile der Raumzeit-Anfrage-Parameter.
Rückgaben
Ein Array von BaseParts , das die räumliche Abfrageerfüllte.
GetPartBoundsInRadius
WorldRoot:GetPartBoundsInRadius() gibt eine Reihe von Teilen zurück, deren Kästen eine Kugel umgeben, deren Volumen mit dem angegebenen Center ( Vector3 ) und Radius (Number) beschrieben wird.
Wie betont, berücksichtigt dieser Raum-Abfrage-Prozess effizient die Volumen der Teile-Kontrollkisten, nicht aber ihre tatsächliche Volumen. Dies kann bei Zylindern, Kugeln, Verbindungen und MeshParts , bei denen nicht blockförmige Formen verwendet werden, wichtig sein. Für Fälle, in denen Genauigkeit besonders wichtig ist, verwenden Sie stattdessen Class.
Diese Methode verwendet ein OverlapParams -Objekt, um wiederverwendbare Teile der Abfragezu beschreiben, z. B. eine Inklusions- oder Ausklusionsliste, die maximale Anzahl von Teilen, die abgerufen werden sollen, und ob die Anfrage den Wert Collision-Gruppe über ihrem Wert Klassen-
Parameter
Der Standort des Zentrums der angegebenen Kugelvolumen, die abgerufen werden sollen.
Der Radius der angegebenen Kugelvolumen, die abgerufen werden sollen.
Enthält wiederverwendbare Teile der Raumzeit-Anfrage-Parameter.
Rückgaben
Ein Array von BaseParts , das die räumliche Abfrageerfüllte.
GetPartsInPart
WorldRoot:GetPartsInPart() gibt eine Reihe von Teilen zurück, deren besetzter Speicher mit dem besetzten Speicher der angegebenen Teil geteilt wird (was in der gleichen WorldRoot wie die zu querenden Teile sein muss). Dieser Method kann in der Platzierung von BasePart:GetTouchingParts() verwendet werden und ist in der Regel eine bessere Wahl.
Wie bemerkt, berücksichtigt diese Raum-Abfrage-Methode die genaue Lautstärke, die von der angegebenen Teil verwendet wird, indem sie einen vollständigen geometrischen überprüfenverwendet. Als Beispiel wird eine konvekt/hollow-Teil nicht mit queried-Teilen innerhalb von ihm übereinstimmen, wenn sie nicht tatsächlich überlappen/berüh
Diese Methode verwendet ein OverlapParams -Objekt, um wiederverwendbare Teile der Abfragezu beschreiben, z. B. eine Inklusions- oder Ausklusionsliste, die maximale Anzahl von Teilen, die abgerufen werden sollen, und ob die Anfrage den Wert Collision-Gruppe über ihrem Wert Klassen-
Parameter
Der Teil, dessen Volumen gegen andere Teile überprüft werden soll.
Enthält wiederverwendbare Teile der Raumzeit-Anfrage-Parameter.
Rückgaben
Ein Array von BaseParts , das die räumliche Abfrageerfüllte.
IKMoveTo
Diese Funktion bewegt die angegebene Teil an den angegebenen Ort via umgekehrte Kinematik , anstatt sie direkt zu verschieben, um sicherzustellen, dass alle Verbindungen, constraints oder Kollisionen, die an einer teilnehmen, physisch zufrieden bleiben. Derzeit ist diese Funktion nur in Studio verfügbar, um plugins , da sie derzeit mit der Physik eines
Translate Stiffness ist eine Zahl zwischen 0 und 1, die angeben, wie aggressiv das Teil zur Position des Ziels CFrame zuordnen soll. Drehen Stiffness ist eine Zahl zwischen 0 und 1, die angeben, wie aggressiv das Teil drehen soll.
Zum Beispiel:
- Wenn die Zugfestigkeit und die Rotierung der Zugfestigkeit beide 1 betragen, wird das Teil exakt auf das Ziel CFrame verschoben, unabhängig von den physikalischen Einschränkungen.
- Wenn die Zugfestigkeit und die Rotationszugfestigkeit auf beide 0,5 gleich sind, versucht die Teil sich genau zum Ziel CFrame zu bewegen, aber kann durch physische Einschränkungen auf dem Weg aus dem Weg gedrückt werden.
- Wenn die Zugfestigkeit und die Rotierung der Zugfestigkeit beide 0 betragen, wird die Ziel-CFrame ignoriert und die physischen Einschränkungen für das Objekt in der Position, in der es sich befindet, gelöst.
Parameter
Der Teil wird bewegt.
Der Ort, an dem die angegebene Teil bewegt werden soll.
Eine Zahl zwischen 0 und 1, die angeben, wie aggressiv die Position des Teils auf die Position des Ziels CFrame zu vergleichen ist.
Eine Zahl zwischen 0 und 1, die angeben, wie aggressiv die Teil drehen ist, um die Rotationspart des Ziels CFrame .
Erlaubt es dir, zu bestimmen, welche Objekte durch die physische Auflösung beeinflusst werden sollen.
Rückgaben
Raycast
Wirft einen Strahl mit einem Ursprung, einer Richtung und einer optionalen RaycastParams . Wenn es einen qualifizierten BasePart oder Terrain Zell findet, wird ein 1> Datatype.
Beachten Sie, dass die Länge (Magnitude) des direktionalen Vektors wichtig ist, da Objekte/Terrain weiter weg von seiner Länge nicht getestet werden. Wenn Sie einen CFrame verwenden, um die Ray-Komponenten zu erstellen, berücksichtigen Sie die Verwendung von CFrame.LookVector als direktional
Diese Methode verwendet kein Datatype.Ray -Objekt, aber seine Ornament- und Richtungskomponenten können von Ray und Ray.Origin ausgeliehen werden.
Parameter
Der Anfangspunkt des Strahls.
Der dreh-Vector des Rays. Beachten Sie, dass die Länge dieses Vectors wichtig ist, da Teile/Terrain weiter weg von seiner Länge nicht getestet werden.
Ein Objekt, das die Zielbarkeit in der Raycast-Operation angeben wird. Wenn nicht angegeben, werden standardmäßige Werte verwendet, in denen alle Teile betrachtet werden und Terrain Wasser nicht ignoriert wird.
Rückgaben
Code-Beispiele
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
Rückgaben
Spherecast
Wirft eine kugelförmige Form in eine bestimmte Richtung und gibt die erste Kollision mit einem BasePart oder Terrain-Zell ab. Dies ist ähnlich, wie WorldRoot:Raycast() einen linearen Ray in einer Richtung findet, um eine Kollision zu finden, aber es verwendet eine 3D-Form anstelle eines Ray.
Anders als WorldRoot:GetPartsInPart() , entdeckt diese Methode nicht BaseParts, die ursprünglich eine Form bildet.
Wenn ein Treffer erkannt wird, wird eine RaycastResult mit den Trefferinformationen zurückgegeben. Die Distance Eigenschaft repräsentiert die Distanz, die die Form zu finden muss, und die Position Eigenschaft repräsentiert den Interektionspunkt, der den Treffer verursacht.
Diese Methode wirft einen Fehler ab, wenn sie ungültige Radius- oder Richtungseingaben überträgt.
Parameter
Die ursprüngliche Position der cast spherical shape.
Der Radius der cast spherical shape in Studs. Der maximale Radius beträgt 256 Studs.
Richtung des Shapecast, mit der Größe, die die Form repräsentiert, die maximale Entfernung, die die Form reisen kann. Die maximale Entfernung beträgt 1024 Studs.
Rückgaben
Code-Beispiele
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
Voraussetzung für die Simulation von Teilen in der Welt ist ein bestimmter Zeitpunkt und ein optionales Set von
Parameter
Die Menge der Zeit, die simuliert werden soll. Dieses Argument muss eine positive Zahl sein. Größere Werte erhöhen die Laufzeit dieser Funktion.
Optionale Matrix von Teilen, die simuliert werden sollen. Dieses Set muss Instanzen enthalten, die von Typ BasePart sind; alle anderen Arten werden ignoriert.
Rückgaben
Code-Beispiele
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)