WorldRoot

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia

Ta podstawowa klasa dostarcza API dla dowolnej instancji przeznaczonej do przetwarzania 3D-przestrzeni i symulacji, takich jak Workspace i WorldModel.

Podsumowanie

Właściwości

Właściwości odziedziczeni z: Model
  • Ustawia poziom szczegółowości na modelu dla doświadczeń z włączonym przesyłaniem instancji.

  • Kontroluje zachowanie przesyłania modelu na Models , gdy jest włączone przesyłanie instancji.

  • Odczyt równoległy

    Główna część Model lub nil jeśli nie jest wyraźnie ustawiać.

  • Bez replikacji
    Brak możliwości dodawania do skryptu
    Odczyt równoległy

    Własność tylko dla edytora używana do skalowania modelu wokół jego osi. Ustawienie tej własności przeniesie skalę, tak jakby Model/ScaleTo zostało na nią wezwane.

  • Bez replikacji
    Odczyt równoległy

    Określa, gdzie pivot a Model , który nie ma nie ma zestawu Model.PrimaryPart jest położony.

Właściwości odziedziczeni z: PVInstance
  • Bez replikacji
    Brak możliwości dodawania do skryptu
    Odczyt równoległy
  • Bez replikacji
    Brak możliwości dodawania do skryptu
    Odczyt równoległy

Metody

Metody odziedziczeni z: Model
  • AddPersistentPlayer(playerInstance : Player):void

    Ustawia ten model na trwały dla określonego gracza. Model.ModelStreamingMode musi być ustawiony na PersistentPerPlayer , aby zachować zachowanie w wyniku dodania.

  • Opisuje poziom, który zawiera wszystkie części Modelu.

  • Zwraca rozmiar najmniejszego pola granicznego, które zawiera wszystkie BaseParts w Model, zgodnie z Model.PrimaryPart ustawionym, jeśli jest ustawiać.

  • Wróщает wszystkie obiekty Player, które ten obiekt modelu jest trwały. Zachowanie się zmienia w zależności od tego, czy ten metodowy jest wezwany z Script lub LocalScript.

  • Zwraca skalę kanoniczną modelu, która domyślnie wynosi 1 dla nowo utworzonych modeli i będzie się zmieniać w miarę skalowania poprzez Model/ScaleTo.

  • MoveTo(position : Vector3):void

    Przenieś PrimaryPart do określonej pozycji. Jeśli główna część nie została określona, zostanie użyta część korzeni modelu.

  • RemovePersistentPlayer(playerInstance : Player):void

    Nie czyni tego modelu już trwałym dla określonego gracza. Model.ModelStreamingMode musi być ustawiony na PersistentPerPlayer , aby zachować zachowanie w wyniku usunięcia.

  • ScaleTo(newScaleFactor : number):void

    Ustawia czynnik skalowania modelu, dostosowując rozmiar i lokalizację wszystkich potomnych Instancji, aby miały ten czynnik skalowania w stosunku do ich początkowych rozmiarów i lokalizacji, gdy czynnik skalowania był 1.

  • TranslateBy(delta : Vector3):void

    Przesunięty Model przez podany Vector3 OFFSET, zachowując orientację modelu. Jeśli kolejny BasePart lub 1> Class.Terrain1> już istnieje w nowej pozycji, to 4> Class.Model4> będzie się łączyć z powyższym obiektem.

Metody odziedziczeni z: PVInstance

Właściwości

Metody

ArePartsTouchingOthers

Czy dotykają inne części zwraca prawdę, jeśli przynajmniej jedna z danych BasePart dotyka jakiejkolwiek innej części. Dwa elementy są uważane za dotykanie, jeśli są w zakresie dystansu, overlapIgnored .

Jeśli nie zostaną dostarczone części, zwracany jest fałszywy.

Parametry

partList: Instances

Lista sprawdzeń części, aby zobaczyć, czy którekolwiek części na liście dotykają jakiejkolwiek części w liście.

overlapIgnored: number

Threshold części w studs, który jest ignorowany przed rozważeniem części dotykających.

Wartość domyślna: 0.000199999995

Zwroty

Prawdziwy, jeśli i tylko jeśli którekolwiek z parts w partList dotykają jakiejkolwiek innej części (części nie w częściList). Fałszywy, jeśli żadne części nie są przekazywane.

Przykłady kodu

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

Zapis równoległy

Rzuca blokową formę w określonym kierunku i wypatrywa pierwszej kolizji za pomocą BasePart lub Terrain komórki. To jest podobne do tego, jak WorldRoot:Raycast() rzuca promieni w kierunku, aby znaleźć kolizję, ale używa 3D-kształtu zamiast promienia.

W przeciwieństwie do WorldRoot:GetPartsInPart() , ta metoda nie wykrywa BaseParts, które początkowo łączą kształt.

Jeśli wykryto trafienie, zwraca się RaycastResult zawierający informacje o trafieniu. Właściwość Distance reprezentuje dystans, jaki trzeba przejść, aby znaleźć trafienie, a właściwość Position reprezentuje punkt intersekcji, który powoduje trafienie.

Ten metodowy wyrzuca błąd, jeśli przekazano nieprawidłowe CFrame, wielkość lub kierunek wejść.

Parametry

cframe: CFrame

Początkowa pozycja i obrót kształtu bloku.

size: Vector3

Rozmiar kształtu bloku w jednostkach. Maksymalny rozmiar to 512 jednostek.

direction: Vector3

Kierunek shapecastu, z magnitudością reprezentującą maksymalną odległość kształtu. Maksymalna odległość wynosi 1024 studs.

Wartość domyślna: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Zwroty

Zawiera wynik operacji shapecast lub nil, jeśli nie dotyczy BasePart lub Terrain komórki.

Przykłady kodu

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

Funkcja ta przenosi tabelę BaseParts do tabeli CFrames bez konieczności uruchomienia domyślnej właściwości Changed dla każdej osobnej części. Dzięki temu dostajesz bardzo szybki sposób na przeniesienie dużej liczby części, ponieważ nie musisz

Trzeci argument pozwala na dalsze optymalizowanie operacji przesuwania. Domyślnie wydarzenie Changed każ

Uwaga, że powinieneś używać tej funkcji tylko wtedy, gdy jesteś pewien, że ruch części jest butelką w górę w twoim kodzie. Po prostu ustawienie właściwości CFrame dla poszczególnych części i spawanych modeli jest szybkie w większości przypadków.

Parametry

partList: Instances
cframeList: Array
Wartość domyślna: "FireAllEvents"

Zwroty

void

GetPartBoundsInBox

Instances
Zapis równoległy

WorldRoot:GetPartBoundsInBox() zwraca arkusz części, których zakresy skrzynek pokrywają się z pudełkiem, którego pojemność jest opisana używając udzielonego centrum ( CFrame ) i rozmiaru ( 0> Datatype.Vector30> ).

Jak podkreślono, ten metodę zapytania przestrzeni uwzględnia skalę obszarów związanych z częściami, a nie ich rzeczywistą objętość. To może być ważne, gdy rozważasz cylindry, kule, łączenia i MeshParts, które mają niestandardowe kształty. W przypadkach, w których dokładność

Ten metod używa obiektu OverlapParams, aby opisać ponowny używany kawałek zapytania przestrzeni koszykowej, takich jak listę włączenia lub wykluczenia lub maksymalną liczbę części do zapytania, czy grupa kolidencji używa wartości Class.BasePart.CanColl

Parametry

cframe: CFrame

Lokalizacja centrum danej złożonej wolumenie kutego.

size: Vector3

Rozmiar podanego pojemnika będącego w zapytaniu.

overlapParams: OverlapParams

Zawiera ponownie używalne części parametrów zapytania przestrzeniowego.

Wartość domyślna: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Zwroty

Instances

Materiały BaseParts, które pasowały do zapytania przestrzeni.

GetPartBoundsInRadius

Instances
Zapis równoległy

WorldRoot:GetPartBoundsInRadius() zwraca arkusz części, których zakresy skrzynek pokrywają kulę, która jest opisana używając danej środka ( Vector3 ) i rozmiaru (number).

Jak podkreślono, ten metodę zapytania przestrzeni uwzględnia skalę obszarów związanych z częściami, a nie ich rzeczywistą objętość. To może być ważne, gdy rozważasz cylindry, kule, łączenia i MeshParts, które mają niestandardowe kształty. W przypadkach, w których dokładność

Ten metod używa obiektu OverlapParams, aby opisać ponowny używany kawałek zapytania przestrzeni koszykowej, takich jak listę włączenia lub wykluczenia lub maksymalną liczbę części do zapytania, czy grupa kolidencji używa wartości Class.BasePart.CanColl

Parametry

position: Vector3

Lokalizacja centrum danej głośby kulowej do zapytania.

radius: number

Okrągłość danej głośnej kuli do zapytania.

overlapParams: OverlapParams

Zawiera ponownie używalne części parametrów zapytania przestrzeniowego.

Wartość domyślna: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Zwroty

Instances

Materiały BaseParts, które pasowały do zapytania przestrzeni.

GetPartsInPart

Instances
Zapis równoległy

WorldRoot:GetPartsInPart() zwraca arkusz części, których miejsce zajęcia jest dzielony z danej części (która musi istnieć w tym samym WorldRoot co części do zapytania). Ta metoda może być używana w miejsce BasePart:GetTouchingParts() i jest ogólnie lepszym wyborem.

Jak zauważono, ten metodę zapytania przestrzeni rozważa dokładną objętość zajętą przez dany element używając pełnej geometricznej sprawdzaćkolidy. Jako przykład, konkawy / głębokie części nie będą pasować do części zapytanych, chyba że rzeczywiście nie będą się sk

Ten metod używa obiektu OverlapParams, aby opisać ponowny używany kawałek zapytania przestrzeni koszykowej, takich jak listę włączenia lub wykluczenia lub maksymalną liczbę części do zapytania, czy grupa kolidencji używa wartości Class.BasePart.CanColl

Parametry

part: BasePart

Część, która ma być sprawdzana w stosunku do innych części.

overlapParams: OverlapParams

Zawiera ponownie używalne części parametrów zapytania przestrzeniowego.

Wartość domyślna: "OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Zwroty

Instances

Materiały BaseParts, które pasowały do zapytania przestrzeni.

IKMoveTo

void
Zabezpieczenia dodatku plug-in

Funkcja ta przesuwa określoną część do określonego położenia za pomocą kinematyki odwróconej zamiast przenosić ją bezpośrednio, aby zapewnić jakiekolwiek połączenia, constraints lub kolizje, które część uczestniczy w pozostaniu fizycznie zadowolona. Obecnie funkcja ta jest dostępna tylko

Tłumacz twardości to liczba pomiędzy 0 i 1 określająca, jak agresywnie dopasować pozycję części do pozycji części docelowej CFrame. Obróć twardość to liczba pomiędzy 0 i 1 określająca, jak agresywnie dopasować rotację części do rotacji części docelowej CFrame.

Na przykład:

  • Jeśli tłumienie siły i obrót siły są równe 1, część zostanie przesunięta dokładnie do celu CFrame bez względu na to, jakie są na niej ograniczenia fizyczne.
  • Jeśli tłumienie siły i obrót siły są obie równe 0,5, to część będzie próbować się poruszać dokładnie do celu CFrame, ale może być wycofana z drogi przez ograniczenia fizyczne na niej.
  • Jeśli tłumienie siły i obrót siły są obie równe 0, to target CFrame zostanie ignorowany, a ograniczenia fizyczne zostaną rozwiązane dla obiektu w pozycji, w której się znajduje.

Parametry

part: BasePart

Część jest przesuwana.

target: CFrame

Lokalizacja do przesunięcia określonej części.

translateStiffness: number

Liczba pomiędzy 0 a 1 określająca, ile agresywnie dopasować pozycję części do pozycji części docelowej CFrame .

Wartość domyślna: 0.5
rotateStiffness: number

Liczba pomiędzy 0 a 1 określająca, ile agresywnie dopasować rotację części do części rotacyjnej celu CFrame .

Wartość domyślna: 0.5
collisionsMode: Enum.IKCollisionsMode

Pozwala określić, które obiekty powinny być dotknięte przez fizyczną rozdzielczość.

Wartość domyślna: "OtherMechanismsAnchored"

Zwroty

void
Zapis równoległy

Rzuca promień używając orygina, kierunku i opcjonalnego RaycastParams . Jeśli znajdzie komórkę BasePart lub Terrain, zwraca wynik operacji zaw

Uwaga, że długość (magnitudo) wektora kierunkowego jest ważna, ponieważ obiekty/terrain dalej niż jego długość nie będą testowane. Jeśli używasz CFrame do pomocy w stworzeniu komponentów promienia, rozważ użycie CFrame.LookVector

Ten metodowy nie używa obiektu Datatype.Ray, ale jego komponenty pochodzenia i kierunku można pożyczyć z Ray i Ray.Origin.

Parametry

origin: Vector3

Punkt pochodzenia promienia.

direction: Vector3

Wektor kierunkowy promienia. Uwaga, że długość tego wektora ma znaczenie, ponieważ części / teren dalej niż jego długość nie będą testowane.

raycastParams: RaycastParams

Obiekt używany do określenia kryteriów elegibilności w operacji raycast. Jeśli nie zostanie podany, domyślne wartości są używane, wszystkie części są rozważane i Terrain woda nie jest ignorowana.

Wartość domyślna: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Zwroty

Zawiera wyniki operacji raycast lub nil, jeśli nie dotyczy komórki BasePart lub Terrain, która została trafiona.

Przykłady kodu

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

Parametry

part: BasePart
direction: Vector3
Wartość domyślna: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Zwroty

Spherecast

Zapis równoległy

Rzuca kuloidalną formę w określonym kierunku i zwraca pierwsze kolizje za pomocą BasePart lub Terrain komórki. To jest podobne do tego, jak WorldRoot:Raycast() rzuca promień liniowy w kierunku znalezienia kolizji, ale używa kształtu 3D zamiast promienia.

W przeciwieństwie do WorldRoot:GetPartsInPart() , ta metoda nie wykrywa BaseParts, które początkowo łączą kształt.

Jeśli wykryto trafienie, zwraca się RaycastResult zawierający informacje o trafieniu. Właściwość Distance reprezentuje dystans, jaki trzeba przejść, aby znaleźć trafienie, a właściwość Position reprezentuje punkt intersekcji, który powoduje trafienie.

Ten metodowy wyrzuca błąd, jeśli zostanie przekazany nieprawidłowy obszar lub kierunek wejścia.

Parametry

position: Vector3

Początkowa pozycja kształtu kulowego.

radius: number

Odległość kształtu kulowego w jednostkach. Maksymalna odległość wynosi 256 jednostek.

direction: Vector3

Kierunek shapecastu, z magnitudością reprezentującą maksymalną odległość kształtu. Maksymalna odległość wynosi 1024 studs.

Wartość domyślna: "RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}"

Zwroty

Zawiera wynik operacji shapecast lub nil, jeśli nie dotyczy BasePart lub Terrain komórki.

Przykłady kodu

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
Zabezpieczenia dodatku plug-in

Zaawansowuje symulację części w świecie opartą na określonym czasie zwiększ

Parametry

dt: number

Liczba czasu, która zostanie symulowana. Ten argument musi być pozytywnym liczbą. Większe wartości zwiększą czas działania tej funkcji.

parts: Instances

Opcjonalny zbiór części, które będą simulowane. Ten zestaw musi zawierać instancje typu BasePart ; wszystkie inne typy zostaną ignorowane.

Wartość domyślna: "{}"

Zwroty

void

Przykłady kodu

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)

Zdarzenia