WorldRoot

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable

Esta clase de base proporciona una API para cualquier instancia destinada a manejar consultas espaciales 3D y simulación, como Workspace y WorldModel .

Resumen

Propiedades

Propiedades heredados de Model
  • Seguridad del plugin
    Leer paralelo

    Establece el nivel de detalle en el modelo para las experiencias con transmisión de instancia habilitada.

  • Controla el comportamiento de streaming del modelo en Models cuando se habilita el streaming de instancia.

  • Leer paralelo

    La parte principal de Model , o nil si no se establecerexplícitamente.

  • No replicado
    No programable
    Leer paralelo

    Propiedad de Editor únicamente usada para escalar el modelo alrededor de su eje. Al configurar esta propiedad, se moverá la escala como si se hubiera llamado a Model/ScaleTo .

  • No replicado
    Leer paralelo

    Determina dónde se encuentra el eje de un Model que no tiene Class.Model.PrimaryPart establecido.

Propiedades heredados de PVInstance

Métodos

Métodos heredados de Model
  • AddPersistentPlayer(playerInstance : Player):void

    Establece este modelo para ser persistente para el jugador especificado. Model.ModelStreamingMode debe establecerse en PersistentPerPlayer para que el comportamiento se cambie como resultado de la adición.

  • Restaura una descripción de un volumen que contiene todas las partes de un Modelo.

  • Restablece el tamaño de la caja de contorno más pequeña que contiene todos los BaseParts en el Model, alineado con el Model.PrimaryPart si se establecer.

  • Devuelve todos los objetos Player que son persistentes para este objeto de modelo. El comportamiento varía según sea que se llame a este método desde un Script o un LocalScript .

  • Devuelve la escala de canon 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 .

  • MoveTo(position : Vector3):void

    Mueve el PrimaryPart a la posición especificada. Si no se ha especificado una parte primaria, se utilizará la parte raíz del modelo.

  • RemovePersistentPlayer(playerInstance : Player):void

    Este modelo ya no es persistente para el jugador especificado. Model.ModelStreamingMode debe establecerse en PersistentPerPlayer para que el comportamiento cambie como resultado de la eliminación.

  • ScaleTo(newScaleFactor : number):void

    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.

  • TranslateBy(delta : Vector3):void

    Sin objetodisponible.

Métodos heredados de PVInstance

Propiedades

Métodos

ArePartsTouchingOthers

ArePartsTouchingOthers 返回 true 如果至少一个 BasePart 正在触摸其他部分。 Two parts are considered "触摸" 如果它们在距离门限内, overlapIgnored

Si no se proporcionan partes, se devuelve false.

Parámetros

partList: Instances

Una lista de partes de verificación para ver si hay alguna parte en la lista que toque alguna parte no en la lista.

overlapIgnored: number

La probabilidad de intersección de partes que se ignora antes de considerar que las partes tocan.

Valor predeterminado: 0.000199999995

Devuelve

Verdadero si y sólo si alguna de las parts en partList toca alguna otra parte (no son partes en la partList). Falso si no se pasan partes.

Muestras de código

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

Escribir paralelo

Castiza una forma de bloque en una dirección específica y devuelve la primera colisión con una celda BasePart o Terrain. Esto es similar a cómo WorldRoot:Raycast() castiza un rayo lineal en una dirección para encontrar una colisión, pero usa una forma de 3D en lugar de un rayo.

A diferencia de WorldRoot:GetPartsInPart() , este método no detecta BaseParts que inicialmente interсеca la forma.

Si se detecta un golpe, se devuelve un RaycastResult que contiene la información del golpe. La propiedad Distance representa la distancia que debe viajar el forma para encontrar un golpe, y la propiedad Position representa el punto de intersección que causa el golpe.

Este método muestra un error si se pasa inválido CFrame, tamaño o dirección de entrada.

Parámetros

cframe: CFrame

La posición inicial y la rotación del bloque de forma.

size: Vector3

El tamaño del bloque de cast en studs. El tamaño máximo es 512 studs.

direction: Vector3

Dirección de la proyección de dirección, con la magnitud que representa la distancia máxima que la forma puede viajar. La distancia máxima es 1024 studs.

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

Devuelve

Contiene el resultado de la operación de shapecast, o nil si no se alcanzó la celda Class.BasePart o BasePart válida.

Muestras de código

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

void

Esta función mueve una tabla de BaseParts a una tabla de CFrames sin necesidad de disparar los eventos de propiedad predeterminada Changed . Esto proporciona una manera muy rápida de mover grandes números de partes, ya que no tienes que pagar el costo de los conjuntos de propiedad separados para

El tercer argumento te permite optimizar aún más la operación de movimiento. Por defecto, el evento Changed de cada parte se desencadenarpara <

Tenga en cuenta que solo debe utilizar esta función si está seguro de que el movimiento de la parte es un botellín en su código. Simplemente configurando la propiedad CFrame de las partes individuales y soldadas es lo suficientemente rápido en la mayoría de los casos.

Parámetros

partList: Instances
cframeList: Array
Valor predeterminado: "FireAllEvents"

Devuelve

void

GetPartBoundsInBox

Instances
Escribir paralelo

WorldRoot:GetPartBoundsInBox() devuelve un arreglo de partes cuyas cajas de conexión coinciden con una caja cuyo volumen se describe utilizando el centro ( CFrame ) y el tamaño ( 0> Datatype.Vector30> ).

Como se ha enfatizado, este método de consulta espacial considera de manera eficiente el volumen de las cajas de contorno de las partes en lugar de su volumen real ocupado. Esto puede ser importante cuando se consideran los cilindros, esferas, uniones y MeshParts que tienen formas no bloqueadas. Para casos en los que la precisión es importante, usa Class.WorldRoot:GetPartsInPart()</

Este método utiliza un objeto OverlapParams para describir partes reutilizables de la consulta espacial, como una lista de inclusión o exclusión, el número máximo de partes para consultar, qué grupo de colisión usar y si la consulta favorece el valor de BasePart.CanCollide de su valor 1>Class.BasePart

Parámetros

cframe: CFrame

La ubicación del centro del volumen de la caja que se solicita.

size: Vector3

El tamaño del volumen de la caja dada para ser consultado.

overlapParams: OverlapParams

Contiene partes reutilizables de los parámetros de la consulta espacial.

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

Devuelve

Instances

Un matriz de BaseParts que coincidió con la consulta espacial.

GetPartBoundsInRadius

Instances
Escribir paralelo

WorldRoot:GetPartBoundsInRadius() 返回一个包含零件的列表,其 边界箱 交叉一个描述的球体的球体 描述使用 中心 ( Datatype.Vector3 ) 和 圆度 ( 给定的数量 ) 描述的球体和radius ( 给定的数量 ) 的球体。

Como se ha enfatizado, este método de consulta espacial considera de manera eficiente el volumen de las cajas de contorno de las partes en lugar de su volumen real ocupado. Esto puede ser importante cuando se consideran los cilindros, esferas, uniones y MeshParts que tienen formas no bloqueadas. Para casos en los que la precisión es importante, usa Class.WorldRoot:GetPartsInPart()</

Este método utiliza un objeto OverlapParams para describir partes reutilizables de la consulta espacial, como una lista de inclusión o exclusión, el número máximo de partes para consultar, qué grupo de colisión usar y si la consulta favorece el valor de BasePart.CanCollide de su valor 1>Class.BasePart

Parámetros

position: Vector3

La ubicación del centro del volumen de la esfera dada para ser consultada.

radius: number

El radio de el volumen de la esfera dado para ser consultado.

overlapParams: OverlapParams

Contiene partes reutilizables de los parámetros de la consulta espacial.

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

Devuelve

Instances

Un matriz de BaseParts que coincidió con la consulta espacial.

GetPartsInPart

Instances
Escribir paralelo

WorldRoot:GetPartsInPart() 返回一个拥有空间与指定部分共用的部分阵列 ( которая必须存在在同一个 WorldRoot 上的部分以便查询 )。此方法可以用作 BasePart:GetTouchingParts() 的替代方法,通常是更好的选择。

Como se ha notado, este método de consulta espacial considera el volumen exacto ocupado por la parte dada usando un cheque de verificar, comprobargeométrica completo. Como ejemplo, una parte concava/hueca no coincidirá con las partes solicitadas dentro de ella a menos que realmente se toque/sobre una parte. Para volúmenes más simples, considere usar Class.

Este método utiliza un objeto OverlapParams para describir partes reutilizables de la consulta espacial, como una lista de inclusión o exclusión, el número máximo de partes para consultar, qué grupo de colisión usar y si la consulta favorece el valor de BasePart.CanCollide de su valor 1>Class.BasePart

Parámetros

part: BasePart

La parte cuyo volumen se debe verificar contra otras partes.

overlapParams: OverlapParams

Contiene partes reutilizables de los parámetros de la consulta espacial.

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

Devuelve

Instances

Un matriz de BaseParts que coincidió con la consulta espacial.

IKMoveTo

void
Seguridad del plugin

Esta función mueve la parte especificada a la ubicación especificada a través de kinematics inversa en lugar de moverla allí directamente, para asegurar que cualquier articulación, constraints o colisiones que la parte esté participando se mantengan satisfechas físicamente. Actualmente esta función solo está disponible en Studio para plugins , ya que actualmente se enfrenta a

Translate stiffness es un número entre 0 y 1 que especifica con qué agresividad sincronizar la posición de la parte a la parte de sincronización del marco de trabajo. Rotate stiffness es un número entre 0 y 1 que especifica con qué agresividad sincronizar la rotación de la parte a la parte de sincronización del marco de trabajo.

Por ejemplo:

  • Si la traducción de la dureza y la rotación de la dureza son ambas iguales a 1, se moverá la parte exactamente a la CFrame objetivo sin importar qué limitaciones físicas hay en ella.
  • Si la fuerza de traducción y la fuerza de rotación son ambas iguales a 0.5, entonces la parte intentará moverse hacia exactamente la CFrame objetivo, pero puede ser empujada fuera del camino por limitaciones físicas en ella.
  • Si traducir la dureza y rotar la dureza son ambas iguales a 0, entonces el marco de trabajo objetivo se ignorará y las limitaciones físicas se resolverán para el objeto en la posición donde se encontró.

Parámetros

part: BasePart

La parte que se está moviendo.

target: CFrame

La ubicación para mover la parte especificada.

translateStiffness: number

Un número entre 0 y 1 que especifica con qué agresividad sincronizar la posición de la parte a la parte de posición del objetivo CFrame .

Valor predeterminado: 0.5
rotateStiffness: number

Un número entre 0 y 1 que especifica con qué agresividad sincronizar la rotación de la parte a la parte de rotación del objetivo CFrame .

Valor predeterminado: 0.5
collisionsMode: Enum.IKCollisionsMode

Te permite especificar qué objetos deben verse afectados por la resolución física.

Valor predeterminado: "OtherMechanismsAnchored"

Devuelve

void
Escribir paralelo

Lanza un rayo usando una dirección, dirección y parámetros opcionales de RaycastParams. Si encuentra una celda BasePart o Terrain válida, se devuelve un 1> Datatype.

Tenga en cuenta que la longitud (magnitud) del vértice direccional es importante, ya que los objetos / terreno lejos de su longitud no se probarán. Si está utilizando un CFrame para ayudar a crear los componentes de rayo, considere utilizar CFrame.LookVector como el vértice direccional y multiplíquelo por la longitud des

Este método no usa un objeto Datatype.Ray , sino que su componente de origen y dirección se puede借りar de Ray y Ray.Origin.

Parámetros

origin: Vector3

El punto de origen del rayo.

direction: Vector3

El vértice direccional de la ray. Nota que la longitud de este vértice no se prueba, ya que las partes/terrain que están más lejos que su longitud no se probarán.

raycastParams: RaycastParams

Un objeto utilizado para especificar la elegibilidad de los golpes en la operación de raycast. Si no se proporciona, se utilizan los valores predeterminados donde se consideran todas las partes y el agua Terrain no se ignora.

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

Devuelve

Contiene los resultados de una operación de raycast, o nil si no se alcanzó la celda Class.BasePart o BasePart .

Muestras de código

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

Parámetros

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

Devuelve

Spherecast

Escribir paralelo

Castiza una forma esférica en una dirección específica y devuelve la primera colisión con una celda BasePart o Terrain. Esto es similar a cómo WorldRoot:Raycast() castiza un rayo lineal en una dirección para encontrar una colisión, pero usa una forma 3D en lugar de un rayo.

A diferencia de WorldRoot:GetPartsInPart() , este método no detecta BaseParts que inicialmente interсеca la forma.

Si se detecta un golpe, se devuelve un RaycastResult que contiene la información del golpe. La propiedad Distance representa la distancia que debe viajar el forma para encontrar un golpe, y la propiedad Position representa el punto de intersección que causa el golpe.

Este método muestra un error si se pasan los parámetros de rango o dirección inválidos.

Parámetros

position: Vector3

La posición inicial de la forma esférica.

radius: number

El radio de la forma esférica en studs. El radio máximo es 256 studs.

direction: Vector3

Dirección de la proyección de dirección, con la magnitud que representa la distancia máxima que la forma puede viajar. La distancia máxima es 1024 studs.

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

Devuelve

Contiene el resultado de la operación de shapecast, o nil si no se alcanzó la celda Class.BasePart o BasePart válida.

Muestras de código

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

void
Seguridad del plugin

Avanza la simulación de las partes en el mundo hacia adelante en función de un incremento de tiempo especificado y un conj

Parámetros

dt: number

La cantidad de tiempo que se simulará. Este argumento debe ser un número positivo. Los valores más grandes aumentarán el tiempo de ejecución de esta función.

parts: Instances

Arreglo opcional de partes que se simulará. Este conjunto debe contener instancias de tipo BasePart ; cualquier otro tipo se ignorará.

Valor predeterminado: "{}"

Devuelve

void

Muestras de código

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)

Eventos