WorldRoot
*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.
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: ModelUstawia 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.
Główna część Model lub nil jeśli nie jest wyraźnie ustawiać.
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.
Określa, gdzie pivot a Model , który nie ma nie ma zestawu Model.PrimaryPart jest położony.
Metody
Wyświetla prawdę, jeśli którekolwiek z danych BasePart dotyka innych części.
Rzuca blokową formę w określonym kierunku i zwraca RaycastResult jeśli blok dotyka BasePart lub Terrain komórki.
Zwraca arkusz listy zawierający granice pudełka.
Zwraca arkusz listy zawierający szeregi z których szeregi pojawiają się w określonej kuli.
Zwraca maszynę wielkością, która jest dzielona z podaną częścią.
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):void
Przesuwa określoną część w określonym położeniu za pomocą odwrotnej kinematyki, zamiast przenieść ją bezpośrednio, aby zapewnić, że wszystkie połączenia, ograniczenia lub kolizje, w których uczestniczy, pozostaną fizycznie zaspokojone.
Rozprzestrzenia promień używając orygina, kierunku i opcjonalnego RaycastParams , a następnie zwraca RaycastResult jeśli kompatybilny obiekt lub teren przecina promień.
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
Rzuca kulszą w określonym kierunku i zwraca RaycastResult jeśli kształt dotyka BasePart lub Terrain komórki.
Przyspiesza symulację dla części w świecie w oparciu o określony czas odchylenia i opcjonalny zestaw BaseParts .
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.
Przenieś PrimaryPart do określonej pozycji. Jeśli główna część nie została określona, zostanie użyta część korzeni modelu.
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.
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.
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.
Zdobadza pivot Class.PVInstance .
Transformuje PVInstance wraz z wszystkimi jego potomnymi PVInstances, tak aby pivot teraz znajdował się w CFrame .
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
Lista sprawdzeń części, aby zobaczyć, czy którekolwiek części na liście dotykają jakiejkolwiek części w liście.
Threshold części w studs, który jest ignorowany przed rozważeniem części dotykających.
Zwroty
Przykłady kodu
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
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
Początkowa pozycja i obrót kształtu bloku.
Rozmiar kształtu bloku w jednostkach. Maksymalny rozmiar to 512 jednostek.
Kierunek shapecastu, z magnitudością reprezentującą maksymalną odległość kształtu. Maksymalna odległość wynosi 1024 studs.
Zwroty
Przykłady kodu
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
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
Zwroty
GetPartBoundsInBox
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
Lokalizacja centrum danej złożonej wolumenie kutego.
Rozmiar podanego pojemnika będącego w zapytaniu.
Zawiera ponownie używalne części parametrów zapytania przestrzeniowego.
Zwroty
Materiały BaseParts, które pasowały do zapytania przestrzeni.
GetPartBoundsInRadius
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
Lokalizacja centrum danej głośby kulowej do zapytania.
Okrągłość danej głośnej kuli do zapytania.
Zawiera ponownie używalne części parametrów zapytania przestrzeniowego.
Zwroty
Materiały BaseParts, które pasowały do zapytania przestrzeni.
GetPartsInPart
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
Część, która ma być sprawdzana w stosunku do innych części.
Zawiera ponownie używalne części parametrów zapytania przestrzeniowego.
Zwroty
Materiały BaseParts, które pasowały do zapytania przestrzeni.
IKMoveTo
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
Część jest przesuwana.
Lokalizacja do przesunięcia określonej części.
Liczba pomiędzy 0 a 1 określająca, ile agresywnie dopasować pozycję części do pozycji części docelowej CFrame .
Liczba pomiędzy 0 a 1 określająca, ile agresywnie dopasować rotację części do części rotacyjnej celu CFrame .
Pozwala określić, które obiekty powinny być dotknięte przez fizyczną rozdzielczość.
Zwroty
Raycast
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
Punkt pochodzenia promienia.
Wektor kierunkowy promienia. Uwaga, że długość tego wektora ma znaczenie, ponieważ części / teren dalej niż jego długość nie będą testowane.
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.
Zwroty
Przykłady kodu
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
Zwroty
Spherecast
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
Początkowa pozycja kształtu kulowego.
Odległość kształtu kulowego w jednostkach. Maksymalna odległość wynosi 256 jednostek.
Kierunek shapecastu, z magnitudością reprezentującą maksymalną odległość kształtu. Maksymalna odległość wynosi 1024 studs.
Zwroty
Przykłady kodu
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
Zaawansowuje symulację części w świecie opartą na określonym czasie zwiększ
Parametry
Liczba czasu, która zostanie symulowana. Ten argument musi być pozytywnym liczbą. Większe wartości zwiększą czas działania tej funkcji.
Opcjonalny zbiór części, które będą simulowane. Ten zestaw musi zawierać instancje typu BasePart ; wszystkie inne typy zostaną ignorowane.
Zwroty
Przykłady kodu
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)