WorldRoot
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
Questa classe di base fornisce un'API per qualsiasi istanza destinata a gestire le domande spaziali 3D e la simulazione, come Workspace e WorldModel .
Sommario
Proprietà
Proprietà provenienti da ModelImposta il livello di dettaglio sul modello per le esperienze con la funzione di streaming in sessione abilitata.
Controlla il comportamento di streaming del modello su Models quando è abilitato lo streaming delle istanze.
La parte principale del Model, o nil se non è esplicitamente Impostare.
Proprietà utilizzata solo dall'editor per scalare il modello intorno al suo pivot. Impostando questa proprietà sposterà lo scala come se Model/ScaleTo fosse stata chiamata su di esso.
Determina dove si trova il punto di rotazione di un Model che non ha non un set Model.PrimaryPart è posizionato.
Metodi
Restituisce vero se qualsiasi parte dei BasePart tocca qualsiasi altra parte.
Genera una forma di blocco in una direzione specificata e restituisce un RaycastResult se la forma colpisce una BasePart o Terrain cell.
Restituisce un' array of parts whose bounding boxes sovrappongono una determinata Quadro di selezione.
Restituisce un' array of parts whose bounding boxes sovrappongono una determinata sfera.
Restituisce un array di parti le cui risorse occupate sono condivise con la parte specificata.
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):void
Muove la parte specificata nella posizione specificata tramite kinematica inversa piuttosto che spostarla direttamente, per garantire che eventuali articolazioni, vincoli o collisioni che partecipa rimangano fisicamente soddisfatte.
Genera un raggio utilizzando una fonte, una direzione e un opzionale RaycastParams , poi restituisce un RaycastResult se un oggetto o un terreno idoneo interessa il raggio.
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
Casts a spherical shape in a given direction and returns a RaycastResult if the shape hits a BasePart or Terrain cell.
Avanzamento della simulazione per le parti nel mondo in base a un incremento di tempo specificato e a un insieme opzionale di BaseParts .
Imposta questo modello per essere persistente per il Giocatorespecificato. Model.ModelStreamingMode deve essere impostato su PersistentPerPlayer per il comportamento di modifica come risultato dell'aggiungimento.
Restituisce una descrizione di un volume che contiene tutte le parti di un modello.
Restituisce il valore della più piccola scatola di confezione che contiene tutti i BaseParts in the Model , allineato con il Model.PrimaryPart se è Impostare.
Restituisce tutti gli oggetti Player che questo oggetto modello è persistente. Il comportamento varia in base a se questo metodo viene chiamato da un Script o da un LocalScript .
Restituisce la scala di canone del modello, che predefinito è 1 per i nuovi modelli creati e cambierà man mano che viene scala via Model/ScaleTo .
Sposta il PrimaryPart alla posizione specificata. Se una parte primaria non è stata specificata, la parte di base del modello sarà utilizzata.
Questo modello non è più persistente per il Giocatorespecificato. Model.ModelStreamingMode deve essere impostato su PersistentPerPlayer per il comportamento di modifica come risultato della rimozione.
Imposta il fattore di escala del modello, regolando la dimensione e la posizione di tutte le istanze discendenti in modo che abbiano quel fattore di escala rispetto alle loro dimensioni e posizione iniziali quando il fattore di escala era 1.
Sposta un Model da un dato Vector3 OFFSET, preservando l'orientamento del modello. Se un altro BasePart o 1> Class.Terrain1> esiste già nella nuova posizione, allora il 4> Class.Model4> si sovrappone all'oggetto dichiarato.
Ottiene il pivot di un PVInstance .
Transforms the PVInstance along with all of its descendant PVInstances such that the pivot is now located at the specified CFrame .
Proprietà
Metodi
ArePartsTouchingOthers
ArePartsTouchingOthers restituisce vero se almeno un'area BasePart tocca qualsiasi altra parte. Due parti sono considerate "toccanti" se sono all'interno della soglia di distanza, overlapIgnored .
Se non sono fornite parti, false viene restituita.
Parametri
Una lista di controlli delle parti per vedere se qualsiasi parte nella lista tocca una parte non nella lista.
Il limite di sovrapposizione della parte che viene ignorato prima che le parti siano considerate toccate.
Restituzioni
Campioni di codice
local part1 = Instance.new("Part")
part1.Name = "Part1"
part1.Anchored = true
part1.Transparency = 0.5
part1.Color = Color3.fromRGB(185, 100, 38)
part1.Size = Vector3.new(2, 2, 2)
part1.Position = Vector3.new(0, 4, 0)
part1.Parent = workspace
local part2 = Instance.new("Part")
part2.Name = "Part2"
part2.Anchored = true
part2.Transparency = 0.5
part2.Color = Color3.fromRGB(200, 10, 0)
part2.Size = Vector3.new(2, 2, 2)
part2.Position = Vector3.new(0, 5, 0)
part2.Parent = workspace
local partList = { part1 }
print(workspace:ArePartsTouchingOthers(partList, 0)) -- True
print(workspace:ArePartsTouchingOthers(partList, 0.999)) -- True
print(workspace:ArePartsTouchingOthers(partList, 1)) -- False
Blockcast
Casts a block shape in a given direction and returns the first collision with a BasePart or Terrain cell. This is analogous to how WorldRoot:Raycast() casts a linear ray in a direction to find a collision, but it uses a 3D shape instead of a ray.
A differenza di WorldRoot:GetPartsInPart() , questo metodo non rileva BaseParts che inizialmente interseca la forma.
Se viene rilevato un colpo, un RaycastResult viene restituito contenente le informazioni sul colpo. La proprietà Distance rappresenta la distanza che il formato deve percorrere per trovare un colpo, e la proprietà Position rappresenta il punto di intersezione che causa il colpo.
Questo metodo throws un errore se viene passato inválido CFrame , dimensioni o input di direzione.
Parametri
La posizione iniziale e la rotazione della forma del blocco.
La dimensione del cast block shape in studs. La dimensione massima è 512 studs.
Direzione della shapecast, con la magnitudine che rappresenta la distanza massima che la forma può viaggiare. La distanza massima è 1024 studs.
Restituzioni
Campioni di codice
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
Questa funzione sposta una tabella di BaseParts a una tabella di CFrames senza necessariamente eseguire gli eventi di proprietà predefinita Changed . Ciò fornisce un modo molto rapido per spostare grandi numeri di parti, poiché non devi pagare il costo di singoli set di proprietà per ciascuna parte.
Il terzo argomento ti consente di ottimizzare ulteriormente l'operazione di movimento. Per impostazione predefinita, l'evento Class.Object.Changed
Nota che dovresti usare questa funzione solo se sei sicuro che il movimento delle parti sia un bottleneck nel tuo codice. Semplicemente impostando la proprietà CFrame delle singole parti e dei modelli saldati è abbastanza veloce nella maggior parte dei casi.
Parametri
Restituzioni
GetPartBoundsInBox
WorldRoot:GetPartBoundsInBox() restituisce un array di parti le cui parti di contorno sovrappongono una scatola il cui volume è descrittivo utilizzando il centro ( CFrame ) e la dimensione ( 0> Datatype.Vector30> ).
Come sottolineato, questo metodo di query spaziale considera in modo efficiente il volume delle parti' bounding box piuttosto che il loro volume effettivo occupato. Questo può essere importante quando si considera i cilindri, le sfere, le unioni e MeshParts che hanno forme non bloccate. Per casi in cui l'esattezza è importante, usa invece WorldRoot:GetPartsInPart() invece
Questo metodo utilizza un oggetto OverlapParams per descrivere parti riutilizzabili della Queryspaziale, come una lista di inclusione o esclusione, il numero massimo di parti da Query, quale gruppo di collisione utilizzare e se la query preferisce un valore BasePart.CanCollide rispetto al suo valore 1>
Parametri
La posizione del centro del volume della casella specificata da cui chiedere.
La dimensione del volume della casella specificata da cui si richiede.
Contiene parti riutilizzabili dei parametri di query spaziale.
Restituzioni
Un array di BaseParts che corrispondeva alla Queryspaziale.
GetPartBoundsInRadius
WorldRoot:GetPartBoundsInRadius() restituisce un array di parti le cui scatole di confezione si sovrappongono a una sfera il cui volume è descritti utilizzando il centro ( Vector3 ) e il raggio (number).
Come sottolineato, questo metodo di query spaziale considera in modo efficiente il volume delle parti' bounding box piuttosto che il loro volume effettivo occupato. Questo può essere importante quando si considera i cilindri, le sfere, le unioni e MeshParts che hanno forme non bloccate. Per casi in cui l'esattezza è importante, usa invece WorldRoot:GetPartsInPart() invece
Questo metodo utilizza un oggetto OverlapParams per descrivere parti riutilizzabili della Queryspaziale, come una lista di inclusione o esclusione, il numero massimo di parti da Query, quale gruppo di collisione utilizzare e se la query preferisce un valore BasePart.CanCollide rispetto al suo valore 1>
Parametri
La posizione del centro del volume della sfera specificato da cui chiedere.
Il raggio della sfera specificata da chiedere.
Contiene parti riutilizzabili dei parametri di query spaziale.
Restituzioni
Un array di BaseParts che corrispondeva alla Queryspaziale.
GetPartsInPart
WorldRoot:GetPartsInPart() restituisce un array di parti le quali occupano uno spazio condiviso con la parte specificata (che deve esistere nello stesso WorldRoot delle parti richieste). Questo metodo può essere utilizzato invece di BasePart:GetTouchingParts() e generalmente è una scelta migliore.
Come notato, questo metodo di query spaziale considera il volume esatto occupato dalla parte specificata utilizzando un Controllare /Verificaredi collisione geometrica completo. Ad esempio, una parte concava / vuota non corrisponderà alle parti richieste all'interno di essa a meno che non siano effettivamente sovrapposte / toccate una parte. Per i volumi più semplici, considera di
Questo metodo utilizza un oggetto OverlapParams per descrivere parti riutilizzabili della Queryspaziale, come una lista di inclusione o esclusione, il numero massimo di parti da Query, quale gruppo di collisione utilizzare e se la query preferisce un valore BasePart.CanCollide rispetto al suo valore 1>
Parametri
La parte il cui volume è da controllare contro le altre parti.
Contiene parti riutilizzabili dei parametri di query spaziale.
Restituzioni
Un array di BaseParts che corrispondeva alla Queryspaziale.
IKMoveTo
Questa funzione sposta la parte specificata in una posizione specificata tramite kinematica inversa piuttosto che spostarla direttamente, per garantire qualsiasi articolazione, constraints , o collisioni che parte sta partecipando a rimanere fisicamente soddisfatto. Attualmente questa funzione è disponibile solo in Studio per plugins , poiché attualmente confla con la fisica di
Traduci la durezza è un numero tra 0 e 1 specificando quanto essere aggressivo per corrispondere la posizione della parte alla parte di posizione della CFrame target. Rendi la durezza è un numero tra 0 e 1 specificando quanto essere aggressivo per corrispondere la rotazione della parte alla parte di rotazione della CFrame target.
Ad esempio:
- Se traduci la durezza e ruota la durezza sono entrambe uguali a 1, allora la parte verrà spostata esattamente al CFrame target indipendentemente da quali siano le restrizioni fisiche su di essa.
- Se la traduzione della forza e la rotazione della forza sono entrambe pari a 0,5, allora la parte cercherà di spostarsi esattamente alla CFrame target, ma potrebbe essere spinta fuori dal modo dalla forza fisica su di essa.
- Se la traduzione della forza e la rotazione della forza sono entrambe uguali a 0, allora la CFrame di destinazione sarà ignorata e le restrizioni fisiche saranno risolte per l'oggetto nella posizione in cui è stato.
Parametri
La parte che viene spostata.
La posizione in cui spostare la parte specificata.
Un numero tra 0 e 1 che specifica quanto essere aggressivo per corrispondere alla posizione della parte alla parte di posizione del target CFrame .
Un numero tra 0 e 1 che specifica quanto essere aggressivo per corrispondere alla rotazione della parte alla parte di rotazione del target CFrame .
Ti consente di specificare quali oggetti devono essere effettati dalla risoluzione fisica.
Restituzioni
Raycast
Casts a ray using an origin, direction, and optional RaycastParams . If it finds an eligible BasePart or Terrain cell, a 1> Datatype.RaycastResult1>
Nota che la lunghezza (magnitudo) del vettore direzionale è importante, poiché gli oggetti / terreno lontani dal suo lungo non saranno testati. Se stai usando un CFrame per aiutare a creare i componenti del raggio, considera di usare CFrame.LookVector come direzione del vettore e moltipl
Questo metodo non usa un oggetto Datatype.Ray, ma i suoi componenti di origine e direzione possono essere prestati da Ray e Ray.Origin .
Parametri
Il punto di origine del raggio.
Il vettore direzionale del raggio. Nota che la lunghezza di questo vettore importa, poiché le parti / terreno lontane dal suo lungo non saranno testate.
Un oggetto utilizzato per specificare l'ammissibilità degli hit nella operazione raycast. Se non viene fornito, vengono utilizzati i valori predefiniti in cui tutte le parti sono considerate e Terrain l'acqua non viene ignorata.
Restituzioni
Campioni di codice
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
Parametri
Restituzioni
Spherecast
Casts a spherical shape in a given direction and returns the first collision with a BasePart or Terrain cell. This is analogous to how WorldRoot:Raycast() casts a linear ray in a direction to find a collision, but it uses a 3D shape instead of a ray.
A differenza di WorldRoot:GetPartsInPart() , questo metodo non rileva BaseParts che inizialmente interseca la forma.
Se viene rilevato un colpo, un RaycastResult viene restituito contenente le informazioni sul colpo. La proprietà Distance rappresenta la distanza che il formato deve percorrere per trovare un colpo, e la proprietà Position rappresenta il punto di intersezione che causa il colpo.
Questo metodo throws un errore se viene passato un input di raggio o di direzione non valido.
Parametri
La posizione iniziale della forma sferica.
Il raggio della forma sferica in studs. Il raggio massimo è 256 studs.
Direzione della shapecast, con la magnitudine che rappresenta la distanza massima che la forma può viaggiare. La distanza massima è 1024 studs.
Restituzioni
Campioni di codice
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
Avanzate la simulazione per le parti nel mondo in base a un incremento di tempo specificato e a un insieme opz
Parametri
La quantità di tempo che verrà simulata. Questo argomento deve essere un numero positivo. Valori più grandi aumenteranno l'esecuzione di questa funzione.
Set opzionale di parti che saranno simulate. Questo set deve contenere istanze di tipo BasePart ; tutti gli altri tipi saranno ignorati.
Restituzioni
Campioni di codice
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)