Workspace
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
El trabajo principal de Workspace es sostener objetos que existen en el mundo 3D, efectivamente BaseParts y Attachments .Mientras tales objetos sean descendientes de Workspace, serán activos.Para BaseParts , esto significa que se renderizarán y interactuarán físicamente con otras partes y el mundo.Para Attachments , esto significa que los objetos decorados para ellos, como ParticleEmitters , Beams y BillboardGuis , se Renderizar.
Entender este comportamiento es importante, ya que significa que los objetos se pueden eliminar de Workspace cuando no se necesitan.Por ejemplo, se puede eliminar el mapa Models cuando se está reproduciendo un mapa diferente.Los objetos que no se necesitan inmediatamente en el mundo 3D se almacenan generalmente en ReplicatedStorage o ServerStorage .
En su rol como titular de objetos 3D activos, Workspace incluye una serie de funciones útiles relacionadas con piezas, sus posiciones y juntas entre ellas.
Accediendo al espacio de trabajo
Workspace se puede acceder de varias maneras, todas las cuales son válidas.
- workspace
- game:GetService("Workspace")
- game.Workspace
Notas
- Los objetos que requieren adornamiento, como ParticleEmitters y BillboardGuis , estarán en la posición
(0, 0, 0) cuando sean padres de Workspace sin que se establecerde otra manera un adornado. - Los métodos Model:MakeJoints() y Model:BreakJoints() heredados de la clase Model se anulan por Workspace:MakeJoints() y Workspace:BreakJoints() que solo se pueden usar en plugins.
- Es imposible eliminar Workspace .
- El objeto actual de un cliente Camera se puede acceder usando la propiedad Workspace.CurrentCamera.
- El objeto Terrain se puede acceder usando la propiedad Workspace.Terrain.
Resumen
Propiedades
La densidad del aire en el nivel del suelo, utilizada en el aplicación de modeladode fuerza aerodinámica.
Determina si los activos creados por otros usuarios se pueden vender en el juego.
Specifica el modo de aceleración de animaciones para el cliente local.
El objeto Camera que está siendo utilizado por el jugador local.
La cantidad de tiempo, en segundos, que el juego ha estado funcionando.
Determina la altura a la que caen BaseParts y su ancestro Models se eliminan de Workspace .
Determina si el motor de físicas calcula fuerzas aerodinámicas en BaseParts cuya propiedad EnableFluidForces es verdadera.
Specifica el vector de viento global para la hierba de terreno animada, nubes dinámicas y partículas.
Determina la aceleración debida a la gravedad aplicada al descenso BaseParts .
Habilita el soporte para restricciones para IKControls. Si está deshabilitado, IKControls ignoran las restricciones de física.
Establece si las cabezas de personaje y los accesorios deben descargarse como piezas de malla.
Controla la lógica utilizada para seleccionar la parte raíz de montaje al usar cualquiera de las restricciones mover.
Establece cómo el solucionador avanzará la simulación de física en el tiempo.
Configura cuando el motor reanuda los manipuladores de eventos.
Configura cómo el motor decide cuándo transmitir contenido lejos de los jugadores.
Si el streaming de contenido está habilitado para el lugar.
Determina si el modo de integridad de streaming está activo.
Distancia mínima a la que se transmitirá el contenido a jugadores con alta prioridad.
Distancia máxima a la que se transmitirá el contenido a los jugadores.
Una referencia al objeto Terrain al que se le asignó el padre al Workspace.
Determina si parts en diferentes grupos establecidos para no chocar ignorarán las colisiones y los eventos de toque.
Establece el nivel de detalle en el modelo para experiencias con transmisión de instancias habilitada.
Controla el comportamiento de transmisión de modelos en Models.
La parte principal de la Model , o nil si no se establecerexplícitamente.
Propiedad solo del editor utilizada para escalar el modelo alrededor de su pivote. Establecer esta propiedad moverá la escala como si se llamara Model/ScaleTo a ella.
Determina dónde se encuentra el eje de un que no tenga un conjunto establecido.
Métodos
Devuelve el número de BaseParts que se consideran activos físicamente, debido a que recientemente estuvieron bajo la influencia de la física.
Devuelve un entero, entre 0 y 100, que representa el porcentaje de tiempo real en el que la simulación de físicas se está actualmente acelerando.
Devuelve el número de fotogramas por segundo en el que la física se está simulando actualmente.
Devuelve el tiempo Unix del servidor en segundos.
Crea juntas entre las especificadas Parts y cualquier parte que toque dependiendo de las superficies de las piezas y del modo de creación de juntas especificado.
Devuelve true si el juego tiene el solucionador de físicas de PGS habilitado.
Rompe todas las articulaciones entre las especificadas BaseParts y otras BaseParts.
Posiciona y acoge el Workspace.CurrentCamera para mostrar el alcance de BaseParts actualmente en el Workspace .
Devuelve verdadero si cualquiera de los dados BasePart está tocando cualquier otra parte.
Lanza una forma de bloque en una dirección determinada y devuelve un RaycastResult si la forma golpea una celda BasePart o Terrain .
Devuelve un array de partes cuyas cajas de límite se superponen a una caja delimitadoradada.
Devuelve un array de partes cuyas cajas de límite se superponen a una esfera dada.
Devuelve un array de partes cuyo espacio ocupado se comparte con la parte dada.
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):()
Mueve la parte especificada a la ubicación especificada a través de cinemática inversa en lugar de moverla allí directamente, para garantizar que cualquier articulación, restricción o colisión en la que participe esa parte se mantenga satisfecha físicamente.
Lanza un rayo usando un origen, dirección y opcional RaycastParams , luego devuelve un RaycastResult si un objeto o terreno elegible intersecta el rayo.
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
Lanza una forma esférica en una dirección determinada y devuelve un RaycastResult si la forma golpea una celda BasePart o Terrain .
Avanza la simulación para piezas en el mundo hacia adelante basada en un incremento de tiempo especificado y un conjunto opcional de BaseParts .
Establece este modelo para que sea persistente para el jugador especificado. Model.ModelStreamingMode debe establecerse en PersistentPerPlayer para que el comportamiento se cambie como resultado de la adición.
Devuelve una descripción de un volumen que contiene todas las partes de un modelo.
Devuelve el tamaño de la caja de contención más pequeña que contiene todo el BaseParts en el Model, alineada con el Model.PrimaryPart si se establecer.
Devuelve todos los objetos Player que este objeto de modelo es persistente para.El comportamiento varía según si este método se llama desde un Script o un LocalScript.
Devuelve la escala canónica del aplicación de modelado, que se establece por defecto en 1 para los modelos recién creados y cambiará a medida que se escala a través de Model/ScaleTo.
Mueve el PrimaryPart a la posición dada. Si no se ha especificado una parte principal, se usará la parte raíz del modelo.
Hace que este modelo ya no sea persistente para el jugador especificado. Model.ModelStreamingMode debe establecerse en PersistentPerPlayer para que el comportamiento se cambie como resultado de la eliminación.
Establece el factor de escala del aplicación de modelado, ajustando el tamaño y la ubicación de todas las Instancias descendientes para que tengan ese factor de escala en relación con sus tamaños y ubicaciones iniciales cuando el factor de escala era 1.
Cambia un Model por el desplazamiento dado Vector3, preservando la orientación del aplicación de modelado.Si otro BasePart o Terrain ya existe en la nueva posición, entonces el Model se superpondrá al objeto dicho.
Obtiene el pivote de un PVInstance .
Transforma el PVInstance junto con todos sus descendientes PVInstances de tal manera que el pivote ahora se encuentra en el punto especificado CFrame.
Eventos
Se enciende cuando se han enviado modelos persistentes al jugador especificado.
Propiedades
AirDensity
La densidad de aire de nivel de suelo ( Y de 0) en unidades de RMU/est³ (ver Unidades de Roblox ), utilizada para calcular la fuerza aerodinámica si Workspace.FluidForces es Experimental .El predeterminado corresponde a la densidad de aire de nivel marítimo realista a temperatura y presión estándar.La densidad del aire disminuye a medida que aumenta la altitud Y , alcanzando el 5% de su valor de nivel de tierra en 100,000 studs.Debajo de Y de 0, la densidad del aire se fija en el valor de entrada.
AllowThirdPartySales
Esta propiedad Workspace determina si los activos creados por otros usos se pueden vender en el juego.
¿Qué son las ventas de terceros?
Cuando este valor es falso, como es por defecto, solo se pueden vender activos creados por el creador del lugar (ya sea un jugador o un grupo) y Roblox usando MarketplaceService .
En la mayoría de los casos, los juegos no necesitan vender activos de terceros.Sin embargo, algunos juegos como los bares de intercambio requieren esta función y, por lo tanto, existen como una opción de opt-in.
¿Qué productos de terceros puedo vender?
Tenga en cuenta, productos para desarrolladores solo se pueden vender en el juego con el que están asociados, independientemente de lo que se haya establecido en AllowThirdPartySales.Esta propiedad afecta a pases de juego y ropa.
AvatarUnificationMode
ClientAnimatorThrottling
Specifica el Enum.ClientAnimatorThrottlingMode para usar para el cliente local.
Cuando está habilitado, las animaciones en instancias remotamente simuladas Model comenzarán a acelerarse. El acelerador calcula la intensidad de aceleración usando:
- FPS en el juego
- Número de animaciones activas
CurrentCamera
El objeto Camera que está siendo utilizado por el jugador local.
Cómo usar la cámara actual
Al buscar el objeto de un cliente , use esta propiedad en lugar de buscar un hijo llamado "Cámara".
Cuando estableces esta propiedad, todos los demás objetos Camera en el Workspace se destruyen, incluido el anterior CurrentCamera.Si estableces esta propiedad a nil o a una cámara que no sea descendiente del espacio de trabajo (o el CurrentCamera está destruido de otra manera), se creará y asignará una nueva Camera.Evite estos escenarios, ya que destruir la cámara puede tener consecuencias no intencionales.
Para obtener más información, vea Programación de la cámara.
DistributedGameTime
La cantidad de tiempo, en segundos, que el juego ha estado funcionando.
A pesar del título, este valor no está actualmente "Distribuido" a través del cliente y el servidor.En cambio, en el servidor representa cuánto tiempo ha estado funcionando el servidor.En el cliente, representa cuánto tiempo el cliente ha estado conectado al servidor.
Los desarrolladores no deben confiar en el comportamiento anterior, y es posible que esta propiedad se sincronice entre clientes y el servidor en el futuro.
Aquellos que buscan el tiempo desde que el programa comenzó a funcionar deberían usar la función 'time' en su lugar.Vea a continuación una comparación entre DistributedGameTime y sus alternativas.
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
Esta propiedad determina la altura en la que el motor de Roblox elimina automáticamente la caída BaseParts y su ancestro Models de Workspace al padrearlos a nil .Esto es para evitar que las partes que se han caído del mapa continúen cayendo para siempre.
Si una parte se elimina debido a este comportamiento es la última parte en un Model, ese modelo también se eliminará.Esto se aplica a todos los ancestros de modelo de la parte.
Esta propiedad está restringida entre -50,000 y 50,000 porque BaseParts no simula o se renderiza correctamente a una gran distancia de la fuente debido a inexactitudes de punto flotante.
Esta propiedad se puede leer por scripts, pero solo se puede configurar por plugins, la barra de comandos o la ventana de propiedades en Studio.
FluidForces
Con esta propiedad habilitada, el motor de físicas calcula fuerzas aerodinámicas en BaseParts cuya propiedad EnableFluidForces es verdadera.El predeterminado, Default , desactiva las fuerzas aerodinámicas.Tenga en cuenta que esta propiedad no se puede establecer a través de la programación y debe alternarse en Studio en su lugar.
GlobalWind
Esta propiedad especifica la dirección y la fuerza que el viento sopla a través de la experiencia, afectando el césped del terreno, las nubes dinámicas y las partículas.Vea el artículo Viento global para detalles.
Gravity
Determina la aceleración debida a la gravedad aplicada al descenso BaseParts .Este valor se mide en studs por segundo cuadrado y por defecto se establece en 196.2 studs/segundo 2.Al cambiar este valor, los desarrolladores pueden simular los efectos de la gravedad más baja o más alta en el juego.
Muestras de código
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
Habilita el soporte para restricciones para IKControls.El valor Default es el mismo que Enabled.Si está desactivado, IKControls ignoran las restricciones de física.Vea IKControl para detalles adicionales.
InsertPoint
MeshPartHeadsAndAccessories
Establece si las cabezas y accesorios de personajes deben descargarse como MeshParts .El valor Default es el mismo que Enabled.Si esta función está habilitada, los avatares integrados usarán MeshParts para la cabeza y los accesorios del personaje.
ModelStreamingBehavior
MoverConstraintRootBehavior
Controla la lógica utilizada para seleccionar la parte raíz de montaje para mecanismos que utilicen cualquiera de las siguientes restricciones:
Cuando esta propiedad se establece en Enum.MoverConstraintRootBehaviorMode.Enabled , se ignorarán estas restricciones al seleccionar la parte raíz de la colección si la restricción no transmite fuerzas entre dos partes (algunos ejemplos son AngularVelocity.ReactionTorqueEnabled establecido a false , AlignPosition.ReactionForceEnabled establecido a false o AlignOrientation.Mode establecido a Enum.OrientationAlignmentMode.OneAttachment ).
Cuando esta propiedad se establece en Enum.MoverConstraintRootBehaviorMode.Disabled, estas restricciones pueden ser consideradas erróneamente al seleccionar la parte raíz de la instalación, lo que conduce a una propiedad de red inconsistente y retrasos al agregar estas restricciones a un mecanismo.
PathfindingUseImprovedSearch
PhysicsImprovedSleep
PhysicsSteppingMethod
Establece cómo el solucionador avanzará la simulación de física en el tiempo.Esta opción no es scriptable y debe establecerse desde la propiedad PhysicsSteppingMethod de Workspace dentro de Studio.Vea Adaptive Timestepping para detalles.
<th>Descripción</th></tr></thead><tbody><tr><td><b>Adaptativo</b></td><td>El motor intenta asignar tasas de simulación óptimas para ensamblajes individuales de 240 Hz, 120 Hz o 60 Hz.Esta configuración se optimiza para el ejecución.</td></tr><tr><td><b>Fijado</b></td><td>Todas las ensamblajes simulados dentro del espacio de trabajo avanzarán a 240 Hz. Esta opción es mejor para la estabilidad y precisión de simulación óptimas.</td></tr><tr><td><b>Por defecto</b></td><td>El valor predeterminado actual es <b>Fijo</b>.</td></tr></tbody>
Opción |
---|
Tenga en cuenta que cuando las asambleas de diferentes velocidades de simulación se conectan a través de Constraints o colisiones, el mecanismo combinado se configurará por defecto con la velocidad de simulación más alta para la estabilidad.
PlayerCharacterDestroyBehavior
PrimalPhysicsSolver
RejectCharacterDeletions
RenderingCacheOptimizations
ReplicateInstanceDestroySetting
Retargeting
SandboxedInstanceMode
SignalBehavior
Esta propiedad determina si los manipuladores de eventos se reanudarán inmediatamente cuando se active el evento o se retrasarán y luego se reanudarán en un punto de reanudación posterior.Los puntos de reanudación actualmente incluyen:
- Procesamiento de entrada (se reanuda una vez por entrada para ser procesada, ver UserInputService )
- Resumen de la espera de guiones legados como wait() , spawn() , y delay()
Para obtener más información, vea Eventos retrasados.
StreamOutBehavior
Los controles StreamOutBehavior controlan donde se descargará el contenido desde el ReplicationFocus basado en las condiciones de memoria del dispositivo, o basado en el radio de streaming.
Vea también:
- Workspace.StreamingEnabled que controla si se habilita el streaming de contenido
StreamingEnabled
La propiedad StreamingEnabled determina si se habilita el streaming de contenido del juego para el lugar.Esta propiedad no es scriptable y, por lo tanto, debe establecerse en el objeto espacio de trabajo en Studio.
Vea también:
StreamingIntegrityMode
Si la instancia transmite está habilitada, una experiencia puede comportarse de formas no intencionales si el personaje de un jugador se mueve a una región del mundo que no se ha transmitido a su cliente.La función de integridad de transmisión ofrece una manera de evitar esas situaciones potencialmente problemáticas.
StreamingMinRadius
La propiedad StreamingMinRadius indica el radio alrededor del personaje del jugador o el actual ReplicationFocus en el que se transmitirá el contenido con la mayor prioridad.Por defecto, a 64 tachuelas.
Se debe tener cuidado al aumentar el radio mínimo predeterminado, ya que hacerlo requerirá más memoria y más ancho de banda del servidor a expensas de otros componentes.
Vea también:
- Workspace.StreamingEnabled que controla si se habilita el streaming de contenido
StreamingTargetRadius
La propiedad StreamingTargetRadius controla la distancia máxima alejada del personaje del jugador o del actual ReplicationFocus en el que se transmitirá el contenido.Por defecto, a 1024 tachuelas.
Tenga en cuenta que el motor está permitido retener contenido previamente cargado más allá del radio de destino, permitiendo la memoria.
Vea también:
- Workspace.StreamingEnabled que controla si se habilita el streaming de contenido
Terrain
Esta propiedad es una referencia al objeto Terrain al que se le asignó el padre Workspace .

Vea terreno ambiental para más información.
TouchEventsUseCollisionGroups
TouchesUseCollisionGroups
Esta propiedad determina si parts en diferentes grupos establecidos para no chocar ignorarán las colisiones y los eventos de toque.Por defecto, el valor de esta propiedad se establece en false .
Cuando esta propiedad está habilitada, las piezas en diferentes grupos configuradas para no chocar también ignorarán la propiedad CanTouch, similar a cómo se ignora BasePart.CanCollide.Para obtener más información sobre el comportamiento de CanTouch, visite su página de propiedad.
Métodos
GetNumAwakeParts
Devuelve el número de BaseParts que se consideran activos físicamente, debido a que recientemente estuvieron bajo la influencia de la física.
Esta función proporciona una medida de cuántos BaseParts están siendo influenciados por, o recientemente bajo la influencia de, fuerzas físicas.
local Workspace = game:GetService("Workspace")print(Workspace:GetNumAwakeParts())
Durmiendo vs partes despiertas
Con el fin de garantizar un buen ejecución, Roblox establece BaseParts en el que la física no se está aplicando a un estado 'durmiendo'.BaseParts con BasePart.Anchored establecido en verdad, por ejemplo, siempre dormirá porque la física no se aplica a ellos.Cuando se aplica una fuerza a un no anclado BasePart, se aplicará un estado "activo".Mientras un BasePart está despierto, el motor de física de Roblox realizará cálculos continuos para garantizar que las fuerzas físicas interactúen correctamente con la pieza.Una vez que el BasePart ya no esté sujeto a fuerzas físicas, volverá a un estado de 'descanso'.
Devuelve
El número de partes despiertas.
GetPhysicsThrottling
Devuelve un entero, entre 0 y 100, que representa el porcentaje de tiempo real en el que la simulación de físicas se está actualmente acelerando.
Esta función se puede utilizar para determinar si, y en qué grado, se está produciendo la limitación de la física.
¿Qué es la limitación de la física?
La limitación de la física ocurre cuando el motor de físicas detecta que no puede mantenerse al día con el juego en tiempo real.Cuando la física se está acelerando, se actualizará con menos frecuencia causando que BaseParts parezca moverse más lento.
Sin aceleración, la simulación de físicas se quedaría más atrás aún fuera de sincronía con el juego.Esto puede conducir a tasas de marco más bajas y a otro comportamiento no deseable.
Los objetos asociados con Humanoids están exentos de la limitación de la física.
Vea también Workspace:SetPhysicsThrottleEnabled() .
Demostrando el aceleramiento de la física
Los desarrolladores siempre deben evitar crear lugares que sobrecarguen el motor de físicas, ya que conduce a una experiencia de calidad inferior para los jugadores.Sin embargo, aquellos que deseen simular la limitación de la física con fines de investigación solo necesitan crear mucho Parts muy rápidamente.
local Workspace = game:GetService("Workspace")local i = 0while true doi += 1if i % 5 == 0 thentask.wait()endlocal part = Instance.new("Part", Workspace)end
Devuelve
El porcentaje de tiempo real en el que la simulación de físicas se está acelerando actualmente.
GetRealPhysicsFPS
Devuelve el número de fotogramas por segundo en el que la física se está simulando actualmente.
Usando GetRealPhysicsFPS para combatir a los explotadores
Un uso común de esta función es detectar si los explotadores están aumentando su velocidad de marco de física local para moverse más rápido.Esto se hace generalmente comparando el resultado devuelto por el GetRealPhysicsFPS de un cliente con un máximo que no se verá violado en circunstancias normales (usualmente 65 o 70).Si se rompe este límite, los desarrolladores pueden usar la función Player:Kick() para eliminar ese Player de la juego.Es importante recordar que, aunque esta práctica puede ser efectiva a veces, las medidas antiexplotadoras del lado del cliente nunca son 100% fiables.
Devuelve
Devuelve el número de fotogramas por segundo en el que la física se está simulando actualmente.
Muestras de código
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() devuelve la mejor aproximación del cliente al tiempo actual en el servidor.Esto es útil para crear experiencias sincronizadas ya que cada cliente obtendrá los mismos resultados independientemente de su zona horaria o reloj local.
Esto devuelve una marca de tiempo Unix, similar a os.time() , que se puede utilizar con os.date() o con DateTime.fromUnixTimestamp() .
La marca de tiempo devuelta por esta función se suaviza para que:
- Es monotónico; su valor nunca disminuirá.
- Se mueve a la misma velocidad que el reloj local dentro de 0.6%.
GetServerTimeNow() es costoso de llamar en comparación con DateTime.now() , y es menos preciso que os.clock() , por lo que debe usarse para asegurarse de que un evento comience en el momento correcto del mundo real o para ajustar las cosas periódicamente para mantener una serie de eventos sincronizados.
Esta función depende del servidor, por lo que llamarla desde un cliente que no está conectado lanzará un error.Tenga en cuenta también que esta función no es adecuada para cosas como recompensas programadas ya que no es segura en comparación con el seguimiento de tales temporizadores en el servidor.
Vea también:
- DistributedGameTime , un reloj de tiempo de juego
Devuelve
El tiempo de seguimiento de Unix estimado en el servidor.
JoinToOutsiders
Esta función crea juntas entre las especificadas Parts y cualquier parte que toque dependiendo de las superficies de las piezas y del modo de creación de juntas especificado.
Esta función crea juntas entre las piezas especificadas y cualquier superficie de contacto plana, dependiendo de las superficies de las piezas y del modo de creación de juntas especificado.
- La pegadura, los clavos, las entradas, las universales, la soldadura y las superficies lisas crearán todas instancias de soldadura.
- Las esferas no se soldarán a nada. Los lados redondeados de los cilindros no se soldarán, pero las caras planas de los lados se soldarán.
El primer parámetro es un array de BaseParts .Las juntas solo se crearán entre las partes en el array y no en el matriz/lista.No se crearán uniones entre las partes en el matriz/lista.
El segundo parámetro es un Enum.JointCreationMode que determina cómo se crearán las juntas.Pasar cualquiera de los valores enumerados, Enum.JointCreationMode.All o Enum.JointCreationMode.Surface, tiene el mismo comportamiento que se equipara a Unirse Siempre
Esta función es utilizada por la herramienta de movimiento de Roblox Studio cuando el usuario termina de mover una selección.En conjunción con Plugin:GetJoinMode() y Workspace:UnjoinFromOutsiders() se puede utilizar para mantener la funcionalidad de unión al desarrollar herramientas de compilación personalizadas de Studio.Vea los fragmentos a continuación para un ejemplo.
local Workspace = game:GetService("Workspace")
-- Terminé de mover una selección; haz uniones
local function finishedMovingParts(parts)
local joinMode = Plugin:GetJoinMode()
Workspace:JoinToOutsiders(parts, joinMode)
end
local Workspace = game:GetService("Workspace")
-- Empezó a mover una selección; romper juntas
local function startMovingParts(parts)
Workspace:UnjoinFromOutsiders(parts)
end
Parámetros
Un array de BaseParts para quien se deben hacer uniones.
El Enum.JointCreationMode que se usará. Pasar en Enum.JointCreationMode.All o Enum.JointCreationMode.Surface tiene el mismo comportamiento que se equipara a Unirse Siempre.
Devuelve
PGSIsEnabled
Devuelve true si el juego tiene el solucionador de físicas de PGS habilitado.
Como Workspace.PGSPhysicsSolverEnabled no se puede acceder a los scripts, la función PGSIsEnabled permite a los desarrolladores decir qué resoluciones de físicas está utilizando el juego.
Devuelve
Verdadero si el solucionador PGS está habilitado.
UnjoinFromOutsiders
Rompe todas las articulaciones entre las especificadas BaseParts y otras BaseParts.
Esta función requiere un array de BaseParts .Nota, las juntas no se romperán entre estos BaseParts (uno al otro), solo entre estos BaseParts y otros BaseParts no en el matriz/lista.
Esta función es utilizada por la herramienta de movimiento de Roblox Studio cuando el usuario comienza a mover una selección.En conjunción con Plugin:GetJoinMode() y Workspace:JoinToOutsiders() se puede utilizar para mantener la funcionalidad de unión al desarrollar herramientas de compilación personalizadas de Studio.Vea los fragmentos a continuación para un ejemplo.
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
Parámetros
Un array de BaseParts para quien se deben romper las uniones.
Devuelve
ZoomToExtents
Posiciona y acoge el Workspace.CurrentCamera para mostrar el alcance de BaseParts actualmente en el Workspace .
Esta función se utilizó en el botón, ahora eliminado, 'Zoom To Extents' en Roblox Studio.Muestra un comportamiento similar a la función 'Zoom To' (F atajo), sin embargo, muestra los extremos del Workspace en lugar del objeto actualmente seleccionado.
Esta función no se puede usar en scripts pero funcionará en la barra de comandos o en los plugins.
Devuelve
Eventos
PersistentLoaded
Este evento se activa cada vez que se envía al jugador todos los modelos persistentes actuales y modelos atómicos sin partes.El parámetro player indica qué jugador ha recibido todas las instancias aplicables.
Tenga en cuenta que la carga de experiencia ocurre antes de la carga persistente, y el disparo del evento DataModel.Loaded no indica que todos los modelos persistentes estén presentes.