WorldRoot
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
Esta clase de base proporciona una API para cualquier instancia destinada a manejar consultas espaciales 3D y simulación, como Workspace y WorldModel .
Resumo
Propriedades
Propriedades herdados de ModelEstablece 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.
La parte principal de Model , o nil si no se establecerexplícitamente.
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 .
Determina dónde se encuentra el eje de un Model que no tiene Class.Model.PrimaryPart establecido.
Métodos
Regresa true si cualquiera de los dados BasePart están tocando cualquier otra parte.
Castiza una forma de bloque en una dirección especificada y devuelve un RaycastResult si la forma toca una celda BasePart o Terrain.
Devuelve un arreglo de partes cuyas cajas de contorno coinciden con una caja delimitadoraespecificada.
Devuelve un arreglo de partes cuyas cajas de contorno se superponen con una determinada esfera.
Devuelve un arreglo de partes cuyo espacio ocupado se comparte con la parte dada.
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):void
Mueve la parte especificada a la ubicación especificada a través de kinemática inversa en lugar de moverla directamente, para asegurar que cualquier articulación, restricción o colisión que participe se mantenga satisfecho físicamente.
Emite un rayo usando una dirección, dirección y opcional RaycastParams , luego devuelve un RaycastResult si un objeto o terreno elegible intercepta el rayo.
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
Castiza una forma esférica en una dirección específica y regresa un RaycastResult si la forma toca una celda BasePart o Terrain.
Avanza la simulación de las partes en el mundo en función de un incremento de tiempo especificado y de un conjunto opcional de BaseParts .
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 .
Mueve el PrimaryPart a la posición especificada. Si no se ha especificado una parte primaria, se utilizará la parte raíz del modelo.
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.
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.
Sin objetodisponible.
Obtém o pivô de um PVInstance.
Transforma o PVInstance juntamente com todos os seus descendentes PVInstances para que o pivô agora seja localizado no CFrame especificado.
Propriedades
Métodos
ArePartsTouchingOthers
ArePartsTouchingOthers 返回 true 如果至少一个 BasePart 正在触摸其他部分。 Two parts are considered "触摸" 如果它们在距离门限内, overlapIgnored 。
Si no se proporcionan partes, se devuelve false.
Parâmetros
Una lista de partes de verificación para ver si hay alguna parte en la lista que toque alguna parte no en la lista.
La probabilidad de intersección de partes que se ignora antes de considerar que las partes tocan.
Devolução
Amostras de código
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
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
La posición inicial y la rotación del bloque de forma.
El tamaño del bloque de cast en studs. El tamaño máximo es 512 studs.
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.
Devolução
Contiene el resultado de la operación de shapecast, o nil si no se alcanzó la celda Class.BasePart o BasePart válida.
Amostras de código
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
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
Devolução
GetPartBoundsInBox
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
La ubicación del centro del volumen de la caja que se solicita.
El tamaño del volumen de la caja dada para ser consultado.
Contiene partes reutilizables de los parámetros de la consulta espacial.
Devolução
Un matriz de BaseParts que coincidió con la consulta espacial.
GetPartBoundsInRadius
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
La ubicación del centro del volumen de la esfera dada para ser consultada.
El radio de el volumen de la esfera dado para ser consultado.
Contiene partes reutilizables de los parámetros de la consulta espacial.
Devolução
Un matriz de BaseParts que coincidió con la consulta espacial.
GetPartsInPart
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
La parte cuyo volumen se debe verificar contra otras partes.
Contiene partes reutilizables de los parámetros de la consulta espacial.
Devolução
Un matriz de BaseParts que coincidió con la consulta espacial.
IKMoveTo
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
La parte que se está moviendo.
La ubicación para mover la parte especificada.
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 .
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 .
Te permite especificar qué objetos deben verse afectados por la resolución física.
Devolução
Raycast
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
El punto de origen del rayo.
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.
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.
Devolução
Contiene los resultados de una operación de raycast, o nil si no se alcanzó la celda Class.BasePart o BasePart .
Amostras de código
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
Devolução
Spherecast
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
La posición inicial de la forma esférica.
El radio de la forma esférica en studs. El radio máximo es 256 studs.
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.
Devolução
Contiene el resultado de la operación de shapecast, o nil si no se alcanzó la celda Class.BasePart o BasePart válida.
Amostras de código
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
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
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.
Arreglo opcional de partes que se simulará. Este conjunto debe contener instancias de tipo BasePart ; cualquier otro tipo se ignorará.
Devolução
Amostras de código
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)