Workspace
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Die Hauptaufgabe von Workspace besteht darin, Objekte zu halten, die in der 3D-Welt existieren, effektiv BaseParts und Attachments .Während solche Objekte Nachkommen von Workspace sind, werden sie aktiv sein.Für BaseParts wird dies bedeuten, dass sie gerendert werden und physisch mit anderen Teilen und der Welt interagieren.Für Attachments bedeutet dies, dass Objekte, die ihnen geschmückt wurden, wie ParticleEmitters , Beams und BillboardGuis , rendernwerden.
Das Verständnis dieses Verhaltens ist wichtig, da es bedeutet, dass Objekte von Workspace entfernt werden können, wenn sie nicht benötigt werden.Zum Beispiel kann die Karte Models entfernt werden, wenn eine andere Karte abgespielt wird.Objekte, die nicht sofort in der 3D-Welt benötigt werden, werden in der Regel in ReplicatedStorage oder ServerStorage gespeichert.
In seiner Rolle als Inhaber aktiver 3D-Objekte enthält Workspace eine Reihe nützlicher Funktionen, die sich auf Teile, ihre Positionen und Gelenze zwischen ihnen beziehen.
Zugriff auf den Arbeitsbereich
Workspace kann auf mehrere weisen zugänglich sein, alle von denen sind gültig.
- workspace
- game:GetService("Workspace")
- game.Workspace
Anmerkungen
- Objekte, die Verzierung benötigen, wie und , werden in der Position sein, wenn der Elternteil zu ohne Verzierung festlegenwird.
- Die Model:MakeJoints() und Model:BreakJoints() Methoden, die von der Model -Klasse geerbt wurden, werden durch Workspace:MakeJoints() und Workspace:BreakJoints() ersetzt, die nur in Plugins verwendet werden können.
- Es ist unmöglich, Workspace zu löschen.
- Das aktuelle Objekt eines Clients kann mit der Eigenschaftenaufgerufen werden.
- Das Objekt Terrain kann mit der EigenschaftenWorkspace.Terrain aufgerufen werden.
Zusammenfassung
Eigenschaften
Die Luftdichte auf Stufe, die im aerodynamischen Modellverwendet wird.
Bestimmt, ob Assets, die von anderen Benutzern erstellt wurden, im Spiel verkauft werden können.
Gibt den Animation-Drosselmodus für den lokalen Client an.
Das Camera Objekt, das vom lokalen Spieler:inverwendet wird.
Die Menge der Zeit, in Sekunden, die das Spiel läuft.
Bestimmt die Höhe, auf der gefallene BaseParts und deren Vorfahren Models von Workspace entfernt werden.
Bestimmt, ob die Physik-Engine aerodynamische Kräfte auf BaseParts berechnet, deren EnableFluidForces Eigenschaft wahr ist.
Gibt den globalen Windvektor für animiertes Geländegras, dynamische Wolken und Partikel an.
Bestimmt die Beschleunigung durch Gravitation, die auf das Fallen BaseParts angewendet wird.
Aktiviert die Unterstützung von Einschränkungen für IKControls. Wenn deaktiviert, ignorieren IKControls physikalische Einschränkungen.
Legt fest, ob Charakterköpfe und Accessoires als MeshParts heruntergeladen werden sollen.
Steuert die Logik, die verwendet wird, um die Monturwurzelteil zu wählen, wenn eine der Bewegungseinschränkungen verwendet wird.
Legt fest, wie der Solver die Physiksimulation in der Zeit voranschreiten lässt.
Konfiguriert, wenn die Engine die Ereignishändler wieder aufnimmt.
Konfiguriert, wie die Engine entscheidet, wann sie Inhalte von Spielern wegstreamen soll.
Ob Inhaltsstreaming für den Ort aktiviert ist.
Bestimmt, ob StreamingIntegrityMode aktiv ist.
Minimale Entfernung, auf die Inhalte an Spieler mit hoher Priorität gestreamt werden.
Maximale Entfernung, auf die Inhalte an Spieler gestreamt werden.
Ein Verweis auf das Terrain Objekt, das dem Workspace übergeordnet wurde.
Bestimmt, ob parts in verschiedenen Gruppen, die nicht kollidieren sollen, Kollisionen und Berührungsereignisse ignorieren wird.
Legt das Detaillevel auf dem Modell für Erlebnisse mit aktiviertem Instanzstreaming fest.
Steuert das Modellstreamingverhalten auf Models, wenn Instanzstreaming aktiviert ist.
Der primäre Teil des Model , oder nil wenn nicht explizit festgelegt.
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.
Bestimmt, wo sich der Pivot eines , der keine festgelegte hat, befindet.
Methoden
Gibt die Anzahl von BaseParts, die als physisch aktiv angesehen werden, da sie kürzlich unter dem Einfluss der Physik standen.
Gibt eine ganzzahligzurück, zwischen 0 und 100, die den Prozentsatz der Echtzeit darstellt, zu dem die Physiksimulation derzeit gedrosselt wird.
Gibt die Anzahl der Frames pro Sekunde zurück, mit der Physik derzeit simuliert wird.
Gibt die Unix-Zeit des Servers in Sekunden zurück.
Erstellt Gelenke zwischen den angegebenen Parts und allen berührenden Teilen abhängig von den Oberflächen der Teile und dem angegebenen Verbindungsmodus.
Gibt true zurück, wenn das Spiel den PGS-Physiklöser aktiviert hat.
Bricht alle Gelenke zwischen dem angegebenen BaseParts und anderen BaseParts .
Positionen und Zooms die Workspace.CurrentCamera um das Ausmaß von BaseParts derzeit im Workspace anzuzeigen.
Gibt wahr zurück, wenn einer der angegebenen BasePart irgendwelche andere Teile berührt.
Gibt eine Blockform in einer bestimmten Richtung aus und gibt eine RaycastResult zurück, wenn die Form eine BasePart oder Terrain Zelle trifft.
Bewegt eine Tabelle von BaseParts zu einer Tabelle von CFrames.
Gibt eine Reihe von Teilen zurück, deren Bindungsboxen eine bestimmte Auswahlboxüberlappen.
Gibt eine Reihe von Teilen zurück, deren Bindungsboxen eine gegebene Kugel überlappen.
Gibt eine Reihe von Teilen zurück, deren besetzter Raum mit dem angegebenen Teil geteilt wird.
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):()
Bewegt das angegebene Teil durch die umgekehrte Kinematik an den angegebenen Ort, anstatt es direkt dorthin zu bewegen, um sicherzustellen, dass alle Gelenke, Einschränkungen oder Kollisionen, an denen das Teil teilnimmt, physisch zufrieden sind.
Wirft einen Strahl mit einer Herkunft, Richtung und optionalen RaycastParams zurück, dann gibt er einen RaycastResult zurück, wenn ein geeignetes Objekt oder Terrain den Strahl kreuzt.
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
Wirft eine kugelförmige Form in eine bestimmte Richtung und gibt eine RaycastResult zurück, wenn die Form eine BasePart oder Terrain Zelle trifft.
Fordert die Simulation für Teile in der Welt vorwärts basierend auf einem angegebenen Zeitincrement und einer optionalen Reihe von BaseParts.
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.
Bewegt den PrimaryPart an die angegebene Position. Wenn kein primärer Teil angegeben wurde, wird der Wurzelteil des Modells verwendet.
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.
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.
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.
Holt den Pivot eines PVInstance .
Verwandelt die PVInstance zusammen mit all ihren Nachkommen PVInstances, so dass der Pivot jetzt an der angegebenen CFrame position ist.
Ereignisse
Feuert, wenn permanente Modelle an den angegebenen Spieler:ingesendet wurden.
Eigenschaften
AirDensity
Die Bodenebene ( Y von 0) Luftdichte in RMU/stud³-Einheiten (siehe Roblox-Einheiten ), die verwendet wird, um die aerodynamische Kraft zu berechnen, wenn Workspace.FluidForces ist Experimental .Der Standard entspricht der realistischen Meeresspiegel-Luftdichte bei Standardtemperatur und -druck.Die Luftdichte sinkt, wenn die Y Höhe zunimmt, und erreicht 5% ihres Bodenlevelwerts bei 100.000 Klötzen.Unter Y von 0 wird die Luftdichte am Eingangswert festgelegt.
AllowThirdPartySales
Diese Workspace Eigenschaft bestimmt, ob Assets, die von anderen Verwendungen erstellt wurden, im Spiel verkauft werden können.
Was sind Drittverkäufe?
Wenn dieser Wert falsch ist, wie es standardmäßig der Fall ist, können nur Assets, die vom Platzschöpfer (sei es ein Spieler oder eine Gruppe) und Roblox erstellt wurden, mit MarketplaceService verkauft werden.
In den meisten Fällen müssen Spiele keine Drittsoftware verkaufen.Einige Spiele wie Handels-Hangouts erfordern jedoch diese Funktion und es existiert daher als opt-in-Option.
Welche Produkte von Drittanbietern kann ich verkaufen?
Beachten Sie, dass Entwicklerprodukte nur im Spiel verkauft werden können, mit dem sie verbunden sind, unabhängig davon, was AllowThirdPartySales aufgestellt ist.Diese Eigenschaft betrifft Spielpässe und Kleidung.
AvatarUnificationMode
ClientAnimatorThrottling
Gibt das Enum.ClientAnimatorThrottlingMode an, das für den lokalen Client verwendet werden soll.
Wenn aktiviert, beginnen Animationen auf entfernt-simulierten Model zu verlangsamen. Der Beschleuniger berechnet die Beschleunigungsintensität mit:
- Ego-Shooterim Spiel
- Anzahl der aktiven Animationen
CurrentCamera
Das Camera Objekt, das vom lokalen Spieler:inverwendet wird.
Wie verwende ich die CurrentCamera
Wenn du nach dem Objekt eines Clients suchst Camera, verwende diese Eigenschaft anstelle der Suche nach einem Kind mit dem Namen Workspace "Kamera".
Wenn du diese Eigenschaftenfestlegst, werden alle anderen Camera Objekte in der Workspace zerstört, einschließlich der vorherigen CurrentCamera.Wenn Sie diese Eigenschaft auf nil oder auf eine Kamera, die kein Nachkomme des Arbeitsbereichs ist (oder die CurrentCamera sonst zerstört wird), festlegen, wird eine neue Camera erstellt und zugewiesen.Vermeiden Sie diese Szenarien, da das Zerstören der Kamera unbeabsichtigte Konsequenzen haben kann.
Für weitere Informationen, siehe Skripten der Kamera.
DistributedGameTime
Die Menge der Zeit, in Sekunden, die das Spiel läuft.
Trotz des Titels ist dieser Wert derzeit nicht "verteilt" auf den Client und den Server.Stattdessen repräsentiert er auf dem Server, wie lange der Server läuft.Auf dem Client repräsentiert es, wie lange der Client mit dem Server verbunden war.
Entwickler sollten nicht auf das obige Verhalten verlassen, und es ist möglich, dass diese Eigenschaft in Zukunft auf Clients und Server überall synchronisiert wird.
Diejenigen, die die Zeit suchen, seit das Programm ausgeführt wird, sollten stattdessen die Funktion 'time' verwenden.Siehe unten für einen Vergleich zwischen DistributedGameTime und seinen Alternativen.
local Workspace = game:GetService("Workspace")print(Workspace.DistributedGameTime) -- Time the game started runningprint(os.time()) -- Time since epoch (1 January 1970, 00:00:00) UTCprint(tick()) -- Time since epoch (1 January 1970, 00:00:00) system timeprint(time()) -- Time the game started runningprint(elapsedTime()) -- Time since Roblox started running
FallHeightEnabled
FallenPartsDestroyHeight
Diese Eigenschaft legt die Höhe fest, auf der die Roblox-Engine fällende BaseParts und deren Vorfahren Models automatisch von Workspace entfernt, indem sie sie zu nil parentisiert.Dies soll verhindern, dass Teile, die von der Karte gefallen sind, für immer weiter fallen.
Wenn ein Teil aufgrund dieses Verhaltens entfernt wird, ist dieses Modell auch in einem Model der letzte Teil.Dies gilt für alle Modell-Vorfahren des Teils.
Diese Eigenschaft wird zwischen -50,000 und 50,000 eingeschränkt, weil BaseParts nicht richtig simuliert oder gerendert werden kann, wenn sie sich auf große Entfernung von der Quelle aufgrund von Unsicherheiten bei der Gleitkommastoleranz befindet.
Diese Eigenschaft kann von Skripten gelesen werden, kann aber nur von Plugins, der Befehlsleiste oder dem Eigenschaften-Fenster in Studio festgelegt werden.
FluidForces
Mit dieser Eigenschaft aktiviert berechnet die Physik-Engine aerodynamische Kräfte auf BaseParts, deren EnableFluidForces Eigenschaft wahr ist.Der Standard, Default , deaktiviert aerodynamische Kräfte.Beachten Sie, dass diese Eigenschaft nicht durch Skripte festgelegt werden kann und stattdessen im Studio umgeschaltet werden muss.
GlobalWind
Diese Eigenschaft gibt die Richtung und Stärke an, durch die der Wind durch das Erlebnis bläst, das Geländegras, dynamische Wolken und Partikel beeinflusst.Siehe den Artikel Globaler Wind für Details.
Gravity
Bestimmt die Beschleunigung durch Gravitation, die auf das Fallen BaseParts angewendet wird.Dieser Wert wird in Stollen pro Sekunde gemessen und ist standardmäßig auf 196,2 Stollen/Sekunde 2 eingestellt.Durch Ändern dieses Werts können Entwickler die Auswirkungen von niedrigerer oder höherer Gravitation im Spiel simulieren.
Code-Beispiele
This script creates a touch pad in the workspace that, when touched, will reduce the game's gravity. Activating the pad again will switch back to normal gravity.
local MOON_GRAVITY_RATIO = 1.62 / 9.81
local DEFAULT_GRAVITY = 196.2
local MOON_GRAVITY = DEFAULT_GRAVITY * MOON_GRAVITY_RATIO
-- Create a touch pad
local pad = Instance.new("Part")
pad.Size = Vector3.new(5, 1, 5)
pad.Position = Vector3.new(0, 0.5, 0)
pad.Anchored = true
pad.BrickColor = BrickColor.new("Bright green")
pad.Parent = workspace
-- Listen for pad touch
local enabled = false
local debounce = false
local function onPadTouched(_hit)
if not debounce then
debounce = true
enabled = not enabled
workspace.Gravity = enabled and MOON_GRAVITY or DEFAULT_GRAVITY
pad.BrickColor = enabled and BrickColor.new("Bright red") or BrickColor.new("Bright green")
task.wait(1)
debounce = false
end
end
pad.Touched:Connect(onPadTouched)
IKControlConstraintSupport
Aktiviert die Unterstützung von Einschränkungen für IKControls.Der Wert Default ist der gleiche wie Enabled.Wenn deaktiviert, ignorieren IKControls physikalische Einschränkungen.Siehe IKControl für weitere Details.
InsertPoint
MeshPartHeadsAndAccessories
Legt fest, ob Charakterköpfe und Accessoires als MeshParts.Der Wert Default ist derselbe wie Enabled.Wenn diese Funktion aktiviert ist, verwenden integrierte Avatare für den Kopf und die Zubehörteile des Charakters MeshParts.
ModelStreamingBehavior
MoverConstraintRootBehavior
Steuert die Logik, die verwendet wird, um die Monturwurzelteil für Mechanismen auszuwählen, die eine der folgenden Einschränkungen verwenden:
Wenn diese Eigenschaft auf Enum.MoverConstraintRootBehaviorMode.Enabled festgelegt ist, werden diese Einschränkungen ignoriert, wenn die Montagemaschinenwurzelteil ausgewählt wird, wenn die Einschränkung keine Kräfte zwischen zwei Teilen überträgt (bei einigen Beispielen wird AngularVelocity.ReactionTorqueEnabled auf false festgelegt, AlignPosition.ReactionForceEnabled auf false oder AlignOrientation.Mode auf Enum.OrientationAlignmentMode.OneAttachment festgelegt).
Wenn diese Eigenschaft auf Enum.MoverConstraintRootBehaviorMode.Disabled festgelegt ist, können diese Einschränkungen beim Auswählen der Monturwurzel falsch betrachtet werden, was zu uneinheitlicher Netzwerkbesitz und Verzögerungen führt, wenn diese Einschränkungen zu einem Mechanismus hinzugefügt werden.
PathfindingUseImprovedSearch
PhysicsImprovedSleep
PhysicsSteppingMethod
Legt fest, wie der Solver die Physiksimulation in der Zeit voranschreiten lässt.Diese Option ist nicht skriptbar und muss von der PhysicsSteppingMethod Eigenschaft von Arbeitsplatz innerhalb von Studio festgelegt werden.Siehe Adaptives Zeitsteuern für Details.
<th>Beschreibung</th></tr></thead><tbody><tr><td><b>Adaptiv</b></td><td>Die Engine versucht, optimale Simulationsraten für einzelne Montagemaschinen von 240 Hz, 120 Hz oder 60 Hz zuzuweisen.Diese Einstellung ist für die Erfüllungoptimiert.</td></tr><tr><td><b>Fixiert</b></td><td>Alle simulierten Zusammenstellungen innerhalb des Arbeitsbereichs werden mit 240 Hz vorangebracht. Diese Option ist am besten geeignet für optimale Stabilität und Simulationsgenauigkeit.</td></tr><tr><td><b>Standardmäßig</b></td><td>Der aktuelle Standard ist <b>Repariert</b>.</td></tr></tbody>
Auswahl |
---|
Beachten Sie, dass wenn sich Versammlungen mit unterschiedlichen Simulationsraten über Constraints oder Kollisionen verbinden, der kombinierte Mechanismus standardmäßig die höchste Simulationsrate für Stabilität verwendet.
PlayerCharacterDestroyBehavior
PrimalPhysicsSolver
RejectCharacterDeletions
RenderingCacheOptimizations
ReplicateInstanceDestroySetting
Retargeting
SandboxedInstanceMode
SignalBehavior
Diese Eigenschaft legt fest, ob Event-Handler sofort fortgesetzt werden, wenn das Ereignis ausgelöst wird, oder verschoben und dann an einem späteren Wiederaufnahmepunkt fortgesetzt werden.Wiederaufnahmepunkte enthalten derzeit:
- Eingabeverarbeitung (wird wieder aufgenommen, sobald eine Eingabe verarbeitet werden soll, siehe UserInputService )
- Legacy-Wartungs-Skriptfortsetzung wie wait() , spawn() und delay()
Für weitere Informationen, siehe Verzögerte Ereignisse.
StreamOutBehavior
Die StreamOutBehavior -Steuerelemente, von denen Inhalte gemäß Geräte-Speicherbedingungen oder basierend auf Streamingradius entlastet werden.
Siehe auch:
- Workspace.StreamingEnabled, das kontrolliert, ob der inhaltstreaming aktiviert ist
StreamingEnabled
Die Eigenschaft StreamingEnabled bestimmt, ob das Streamen von Spielinhalten für den Ort aktiviert ist.Diese Eigenschaft ist nicht skriptbar und muss daher auf dem Arbeitsbereich -Objekt in Studio festgelegt werden.
Siehe auch:
StreamingIntegrityMode
Wenn die Instanz Streaming aktiviert ist, kann ein Erlebnis auf unbeabsichtigte Weise reagieren, wenn der Charakter eines Spieler:inin eine Region der Welt wechselt, die nicht auf seinen Client gestreamt wurde.Die Streaming-Integritätsfunktion bietet eine Möglichkeit, diese möglicherweise problematischen Situationen zu vermeiden.
StreamingMinRadius
Die Eigenschaft StreamingMinRadius gibt den Radius um den Charakter des Spieler:inoder die aktuelle ReplicationFocus an, in der Inhalte mit höchster Priorität gestreamt werden.Standard auf 64 Stollen.
Beim Erhöhen des Standardminimalradius muss Vorsicht walten, da dies mehr Speicher und mehr Serverbandbreite auf Kosten anderer Komponenten erfordert.
Siehe auch:
- Workspace.StreamingEnabled, das kontrolliert, ob der inhaltstreaming aktiviert ist
StreamingTargetRadius
Die Eigenschaft StreamingTargetRadius steuert die maximale Entfernung vom Charakter des Spieler:inoder der aktuellen ReplicationFocus, in der Inhalte gestreamt werden.Standard auf 1024 Stollen.
Beachten Sie, dass die Engine es erlaubt ist, zuvor geladene Inhalte über den Zielradius hinaus zu behalten, sofern das Gedächtnis es zulässt.
Siehe auch:
- Workspace.StreamingEnabled, das kontrolliert, ob der inhaltstreaming aktiviert ist
Terrain
Diese Eigenschaft ist ein Verweis auf das Terrain Objekt, das dem Workspace Objekt zugewiesen wurde.

Siehe Umwelt-Terrain für weitere Informationen.
TouchEventsUseCollisionGroups
TouchesUseCollisionGroups
Diese Eigenschaft bestimmt, ob parts in verschiedenen Gruppen, die nicht kollidieren sollen, Kollisionen und Berührungsereignisse ignorieren wird.Standardmäßig wird der Wert dieser Eigenschaft auf false festgelegt.
Wenn diese Eigenschaft aktiviert ist, ignorieren Teile in verschiedenen Gruppen, die nicht kollidieren sollen, auch die EigenschaftenCanTouch, ähnlich wie BasePart.CanCollide ignoriert wird.Für weitere Informationen über das Verhalten von CanTouch besuchen Sie bitte seine Eigenschaftsseite.
Methoden
GetNumAwakeParts
Gibt die Anzahl von BaseParts, die als physisch aktiv angesehen werden, da sie kürzlich unter dem Einfluss der Physik standen.
Diese Funktion gibt eine Maßzahl an, wie viele BaseParts von physischen Kräften beeinflusst werden oder kürzlich unter deren Einfluss stehen.
local Workspace = game:GetService("Workspace")print(Workspace:GetNumAwakeParts())
Schlafen gegen wache Teile
Um eine gute Erfüllungzu gewährleisten, setzt Roblox BaseParts fest, in dem die Physik nicht auf einen "schlafenden" Zustand angewendet wird.BaseParts mit BasePart.Anchored auf wahr gesetzt, wird zum Beispiel immer schlafen, da die Physik für sie nicht gilt.Wenn eine Kraft auf eine nicht verankerte BasePart angewendet wird, wird ein "aktiv" Zustand angewendet.Während ein BasePart wach ist, führt die Roblox-PhysikEngine kontinuierliche Berechnungen durch, um sicherzustellen, dass physische Kräfte richtig mit dem Teil interagieren.Sobald die BasePart nicht mehr physikalischen Kräften unterliegt, kehrt sie in einen "schlafenden" Zustand zurück.
Rückgaben
Die Anzahl der wachen Teile.
GetPhysicsThrottling
Gibt eine ganzzahligzurück, zwischen 0 und 100, die den Prozentsatz der Echtzeit darstellt, zu dem die Physiksimulation derzeit gedrosselt wird.
Diese Funktion kann verwendet werden, um zu bestimmen, ob und inwieweit Physik-Throttling auftritt.
Was ist Physik-Drosselung?
Physik-Throttling tritt auf, wenn die Physik-Engine feststellt, dass sie das Spiel nicht in Echtzeit verfolgen kann.Wenn die Physik gedrosselt wird, wird sie weniger häufig aktualisiert, was dazu führt, dass BaseParts langsamer bewegt erscheint.
Ohne Drosselung würde die Physiksimulation weiter zurückfallen, was nicht im Einklang mit dem Spiel ist.Dies kann zu niedrigeren Frameraten und anderen unerwünschten Verhaltensweisen führen.
Objekte, die mit Humanoids verbunden sind, sind von der Physikbeschleunigung ausgenommen.
Siehe auch Workspace:SetPhysicsThrottleEnabled().
Physik-Drosselung demonstrieren
Entwickler sollten immer vermeiden, Orte zu erstellen, die die Physik-Engine überlasten, da dies zu einem schlechten Erlebnis für Spieler führt.Diejenigen, die Physik-Throttling für Forschungszwecke simulieren möchten, müssen jedoch nur sehr schnell viele Parts erstellen.
local Workspace = game:GetService("Workspace")local i = 0while true doi += 1if i % 5 == 0 thentask.wait()endlocal part = Instance.new("Part", Workspace)end
Rückgaben
Der Prozentsatz der Echtzeit, in der die Physiksimulation derzeit gedrosselt wird.
GetRealPhysicsFPS
Gibt die Anzahl der Frames pro Sekunde zurück, mit der Physik derzeit simuliert wird.
Verwendung von GetRealPhysicsFPS, um Exploiter zu bekämpfen
Eine häufige Verwendung dieser Funktion ist es, zu erkennen, ob Exploiter ihre lokale Physik-Frame-Rate erhöhen, um schneller zu bewegen.Dies geschieht in der Regel, indem das Ergebnis, das von der GetRealPhysicsFPS eines Clients zurückgegeben wird, mit einem Maximum verglichen wird, das in normalen Fällen nicht überschritten wird (normalerweise 65 oder 70).Wenn diese Grenze überschritten wird, können Entwickler die Player:Kick()-Funktion verwenden, um diese Player aus dem Spiel zu entfernen.Es ist wichtig zu bedenken, dass, obwohl diese Praxis manchmal effektiv sein kann, Anti-Exploiter-Maßnahmen auf clientseitige nie zu 100% zuverlässig sind.
Rückgaben
Gibt die Anzahl der Frames pro Sekunde zurück, mit der Physik derzeit simuliert wird.
Code-Beispiele
Speed exploiters commonly increase their local physics FPS in order to increase their character speed. This can be detected from a LocalScript by checking if the player's physics FPS is over the maximum:
local Players = game:GetService("Players")
local player = Players.LocalPlayer
while task.wait(1) do
if workspace:GetRealPhysicsFPS() > 65 then
player:Kick()
end
end
GetServerTimeNow
GetServerTimeNow() gibt die beste Annäherung des Clients an die aktuelle Zeit auf dem Server zurück.Dies ist nützlich für die Erstellung synchronisierter Erlebnisse, da jeder Client unabhängig von seiner Zeitzone oder lokalen Uhr die gleichen Ergebnisse erhält.
Dies gibt eine Unix-Zeitmarke zurück, ähnlich wie os.time(), die mit os.date() oder mit DateTime.fromUnixTimestamp() verwendet werden kann.
Der Zeitpunkt, der von dieser Funktion zurückgegeben wird, wird glattgeschliffen, so dass:
- Es ist monoton; sein Wert wird nie sinken.
- Es bewegt sich mit der gleichen Geschwindigkeit wie die lokale Uhr innerhalb von 0,6%.
GetServerTimeNow() ist teuer im vergleich zu DateTime.now() und weniger präzise als os.clock(), so sollte es verwendet werden, um sicherzustellen, dass ein ereignis zur richtigen realzeit beginnt oder um dinge periodisch anzupassen, um eine reihe von ereignissen im einklang zu halten.
Diese Funktion basiert auf dem Server, sodass ein Fehler auftreten wird, wenn sie von einem Client ausgerufen wird, der nicht verbunden ist.Beachten Sie auch, dass diese Funktion nicht für Dinge wie zeitgesteuerte Belohnungen geeignet ist, da sie nicht sicher ist im Vergleich zu der Verfolgung solcher Timer auf dem Server.
Siehe auch:
- DistributedGameTime , eine spielzeituhr
Rückgaben
Der geschätzte Unix-Zeitstempel auf dem Server.
JoinToOutsiders
Diese Funktion erstellt Verbindungen zwischen den angegebenen Parts und allen berührenden Teilen, abhängig von den Oberflächen der Teile und dem angegebenen Verbindungsmodus.
Diese Funktion erstellt Verbindungen zwischen den angegebenen Teilen und allen flachen Berührungsflächen, abhängig von den Oberflächen der Teile und dem angegebenen Verbindungsmodus.
- Kleber, Stollen, Eingänge, Universal, Schweiß und glatte Oberflächen werden alle Weld-Instanzen erstellen.
- Kugeln werden nicht auf irgendetwas verschweißt. Die abgerundeten Seiten von Zylindern werden nicht verschweißt, aber die flachen Endseiten werden es tun.
Der erste Parameter ist eine Liste von BaseParts.Gelenke werden nur zwischen den Teilen in der Liste erstellt und nicht in der Array.Gelenke werden nicht zwischen den Teilen in der Arrayerstellt.
Der zweite Parameter ist ein Enum.JointCreationMode, der festlegt, wie Gelenke erstellt werden.Das Übergeben eines der enum-Werte, Enum.JointCreationMode.All oder Enum.JointCreationMode.Surface, hat das gleiche Verhalten, das der Beitritt immer entspricht
Diese Funktion wird von der Roblox Studio-Bewegungsfunktion verwendet, wenn der Benutzer die Bewegung einer Auswahl abgeschlossen hat.In Kombination mit Plugin:GetJoinMode() und Workspace:UnjoinFromOutsiders() kann es verwendet werden, um die Verbindungsfunktionalität bei der Entwicklung von benutzerdefinierten Studio-Build-Tools zu erhalten.Siehe die Snippets unten für ein Beispiel.
local Workspace = game:GetService("Workspace")
-- Auswahlbewegung abgeschlossen; Schließe Gelenke
local function finishedMovingParts(parts)
local joinMode = Plugin:GetJoinMode()
Workspace:JoinToOutsiders(parts, joinMode)
end
local Workspace = game:GetService("Workspace")
-- Bewegung einer Auswahl begonnen; Bruchgelenke
local function startMovingParts(parts)
Workspace:UnjoinFromOutsiders(parts)
end
Parameter
Ein Array von BaseParts für die, bei denen Gelenke hergestellt werden sollen.
Das Enum.JointCreationMode zu verwenden. Das Übergeben von Enum.JointCreationMode.All oder Enum.JointCreationMode.Surface hat das gleiche Verhalten, das der Beitritt immer entspricht.
Rückgaben
PGSIsEnabled
Gibt true zurück, wenn das Spiel den PGS-Physiklöser aktiviert hat.
Da Workspace.PGSPhysicsSolverEnabled von Skripten nicht zugänglich ist, ermöglicht die Funktion PGSIsEnabled den Entwicklern, anzugeben, mit welchem Physiklöser das Spiel verwendet wird.
Rückgaben
Wahr, wenn der PGS-Löser aktiviert ist.
UnjoinFromOutsiders
Bricht alle Gelenke zwischen dem angegebenen BaseParts und anderen BaseParts .
Diese Funktion erfordert ein Array von BaseParts.Beachten Sie, dass keine Gelenke zwischen diesen BaseParts (einander) gebrochen werden, nur zwischen diesen BaseParts und anderen BaseParts nicht in der Liste.
Diese Funktion wird von der Roblox Studio-Bewegungsfunktion verwendet, wenn der Benutzer beginnt, eine Auswahl zu bewegen.In Kombination mit Plugin:GetJoinMode() und Workspace:JoinToOutsiders() kann es verwendet werden, um die Verbindungsfunktionalität bei der Entwicklung benutzerdefinierter Studio-Build-Tools zu erhalten.Siehe die Snippets unten für ein Beispiel.
local Workspace = game:GetService("Workspace")
-- Finished moving a selection; make joints
local function finishedMovingParts(parts)
local joinMode = Plugin:GetJoinMode()
Workspace:JoinToOutsiders(parts, joinMode)
end
local Workspace = game:GetService("Workspace")
-- Started moving a selection; break joints
local function startMovingParts(parts)
Workspace:UnjoinFromOutsiders(parts)
end
Parameter
Ein Array von BaseParts für die, bei denen Gelenke gebrochen werden sollen.
Rückgaben
ZoomToExtents
Positionen und Zooms die Workspace.CurrentCamera um das Ausmaß von BaseParts derzeit im Workspace anzuzeigen.
Diese Funktion wurde in der, jetzt entfernten, Schaltfläche "Zum Ausmaß hinzoomen" in Roblox Studio verwendet.Es zeigt ein ähnliches Verhalten wie die Funktion "Zoom To" (Tastenkombination), zeigt aber die Grenzen des Workspace anstatt des derzeit ausgewählten Objekts.
Diese Funktion kann in Skripten nicht verwendet werden, funktioniert aber in der Befehlsleiste oder in Plugins.
Rückgaben
Ereignisse
PersistentLoaded
Dieses Ereignis wird ausgelöst, wenn ein Spieler alle aktuellen dauerhaften Modelle und teilfreie atomare Modelle erhalten hat.Der player-Parameter zeigt an, welcher Spieler alle anwendbaren Instanzen erhalten hat.
Beachten Sie, dass die Erfahrungsladung vor der dauerhaften Ladung erfolgt und das Feuern des Ereignisses DataModel.Loaded nicht darauf hinweist, dass alle dauerhaften Modelle vorhanden sind.