Workspace
*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.
Głównym zadaniem Workspace jest utrzymywanie obiektów, które istnieją w świecie 3D, skutecznie BaseParts i Attachments .Choć takie obiekty są potomkami Workspace, będą aktywne.Dla BaseParts oznacza to, że zostaną wyrenderowane i będą interakcjonować fizycznie z innymi częściami i światem.Dla Attachments oznacza to, że obiekty ozdobione dla nich, takie jak ParticleEmitters , Beams i BillboardGuis , zostaną wyrenderowane.
Rozumienie tego zachowania jest ważne, ponieważ oznacza, że obiekty mogą być usuwane z Workspace gdy nie są potrzebne.Na przykład mapa Models może zostać usunięta, gdy odtwarzana jest inna mapa.Obiekty, które nie są natychmiast potrzebne w świecie 3D, są ogólnie przechowywane w ReplicatedStorage lub ServerStorage.
W roli posiadacza aktywnych obiektów 3D Workspace zawiera szereg przydatnych funkcji związanych z częściami, ich pozycjami i stawami między nimi.
Dostęp do przestrzeni roboczej
Workspace można uzyskać na kilka sposobów, wszystkie z nich są ważne.
- workspace
- game:GetService("Workspace")
- game.Workspace
Notatki
- Obiekty, które wymagają ozdobienia, takie jak ParticleEmitters i BillboardGuis, będą w pozycji
(0, 0, 0) , gdy zostaną przypisane do Workspace bez ustawienia innego ozdobnika. - Metody Model:MakeJoints() i Model:BreakJoints() odziedziczone z klasy Model są zastępowane przez Workspace:MakeJoints() i Workspace:BreakJoints(), które mogą być używane tylko w pluginach.
- Nie można usunąć Workspace.
- Obiekt obecny klienta Camera może być uzyskany za pomocą właściwości Workspace.CurrentCamera.
- Obiekt Terrain można uzyskać za pomocą właściwości Workspace.Terrain.
Podsumowanie
Właściwości
Gęstość powietrza na poziomie ziemskim, używana w modelu siły aerodynamicznej.
Określa, czy zasoby stworzone przez innych użytkowników mogą być sprzedawane w gra.
Określa tryb ograniczania animacji dla lokalnego klienta.
Obiekt Camera używany przez lokalnego gracza.
Ilość czasu, w sekundach, przez które gra działa.
Określa wysokość, na której spada BaseParts i ich przodek Models są usuwane z Workspace .
Określa, czy silnik fizyczny oblicza siły aerodynamiczne na BaseParts, której właściwość EnableFluidForces jest prawdziwa.
Określa globalny wektor wiatru dla trawy terenu animowanego, dynamicznych chmur i cząstek.
Określa przyspieszenie z powodu grawitacji zastosowane do spadania BaseParts .
Włącza wsparcie dla ograniczeń dla IKControls. Jeśli jest wyłączone, IKControls ignorują ograniczenia fizyczne.
Ustawia, czy głowy i akcesoria postaci powinny być pobierane jako części siatki.
Kontroluje logikę używaną do wyboru części korzenia złożenia przy użyciu dowolnego ograniczenia przenośnika.
Ustawia, w jaki sposób rozwiązanie zaawansuje symulację fizyczną w czasie.
Konfiguruje, kiedy silnik wznowi obsługę zdarzeń.
Konfiguruje, jak silnik decyduje, kiedy przesyłać treści z dala od graczy.
Czy strumieniowanie treści jest włączone dla miejsce.
Określa, czy tryb StreamingIntegrity jest aktywny.
Minimalna odległość, do której treść zostanie przesłana do graczy o wysokim priorytecie.
Maksymalna odległość, do której treść zostanie przesłana do graczy.
Określa, czy parts w różnych grupach ustawione na niezderzanie się zignoruje kolizje i zdarzenia dotykowe.
Ustawia poziom szczegółowości na modelu dla doświadczeń z włączonym strumieniem instancji.
Kontroluje zachowanie przesyłania modelu na Models gdy włączono 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łaściwości przeniesie skalę tak, jakby Model/ScaleTo została wezwana na niej.
Określa, gdzie znajduje się osiować punkt obrotowy , który nie ma ustawionego zestawu.
Metody
Zwraca liczbę BaseParts, które są uważane za aktywne fizycznie, ze względu na to, że niedawno były pod wpływem fizyki.
Zwraca całkowitą liczbę, pomiędzy 0 a 100, reprezentującą odsetek czasu rzeczywistego, do którego obecnie jest ograniczana symulacja fizyczna.
Zwraca liczbę klatek na sekundę, przy których obecnie symulowana jest fizyka.
Zwraca czas serwera Unix w sekundach.
Tworzy stawy między określonymi Parts i dowolnymi częściami dotykającymi w zależności od powierzchni części i określonego trybu tworzenia stawów.
Wyświetla true jeśli gra ma włączony rozwiązacz PGS Physics.
Łamie wszystkie stawy między określonym BaseParts a innym BaseParts.
Pozycje i powiększenia Workspace.CurrentCamera pokazują zakres BaseParts obecnie w Workspace.
Zwraca prawdę, jeśli którykolwiek z podanych BasePart dotyka innych części.
Rzuca kształt bloku w określonym kierunku i zwraca RaycastResult, jeśli kształt uderza w komórkę BasePart lub Terrain.
Zwraca tablicę części, których ramki przylegania pokrywają dany pudełko.
Zwraca tablicę części, których pudełka graniczne pokrywają daną sferę.
Zwraca tablicę części, których przestrzeń zajęta jest współdzielona z daną częścią.
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):()
Przesuwa określoną część do określonej lokalizacji za pomocą odwrotnej kinematyki, zamiast przenosić ją bezpośrednio tam, aby zapewnić, że wszelkie stawki, ograniczenia lub kolizje, w których uczestniczy część, pozostają fizycznie zadowolone.
Rzuca promień za pomocą pochodzenia, kierunku i opcjonalnego RaycastParams , następnie zwraca RaycastResult , jeśli właściwy obiekt lub teren przecinają promień.
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
Rzuca kształt sferyczny w określonym kierunku i zwraca RaycastResult, jeśli kształt uderza w komórkę BasePart lub Terrain.
Przyspiesza symulację dla części na świecie w przód w oparciu o określony wzrost czasu i opcjonalny zestaw BaseParts.
Ustawia ten model, aby był trwały dla określonego gracza.Model.ModelStreamingMode musi zostać ustawione na PersistentPerPlayer , aby zachowanie zostało zmienione w wyniku dodania.
Zwraca opis woluminu, który zawiera wszystkie części modelu.
Zwraca rozmiar najmniejszego pudełka ograniczającego, które zawiera wszystkie BaseParts w Model, zgodnie z Model.PrimaryPart, jeśli jest ustawiać.
Zwraca wszystkie obiekty Player , które ten obiekt modelowy jest trwały dla.Zachowanie różni się w zależności od tego, czy metoda ta jest wywoływana z Script lub LocalScript.
Zwraca kanoniczną skalę modelu, która domyślnie wynosi 1 dla nowo utworzonych modeli i zmieni się, gdy zostanie skalowana za pomocą Model/ScaleTo.
Przesuwa PrimaryPart do określonej pozycji. Jeśli nie zaznaczono głównej części, zostanie użyta część korzenna modelu.
Sprawia, że ten model nie jest już trwały dla określonego gracza.Model.ModelStreamingMode musi zostać ustawione na PersistentPerPlayer , aby zachowanie zostało zmienione w wyniku usunięcia.
Ustawia czynnik skali modelu, dostosowując rozmiar i lokalizację wszystkich potomnych instancji tak, aby miały ten czynnik skali w stosunku do ich początkowych rozmiarów i lokalizacji, gdy czynnik skali wynosił 1.
Przesuwa Model przez podany odległość Vector3, zachowując orientację modelu.Jeśli istnieje już inny BasePart lub Terrain w nowej pozycji, wtedy Model pokryje powiedziany obiekt.
Otrzymuje pivot z PVInstance .
Przekształca PVInstance wraz z całym jego potomkiem PVInstances tak, że osie zostaną teraz umieszczone w określonym CFrame .
Zdarzenia
Wypala się, gdy trwałe modele zostały wysłane do określonego gracza.
Właściwości
AirDensity
Poziom gruntu ( Y z 0) gęstość powietrza w jednostkach RMU/stud³ (patrz Robloxowe jednostki ), używany do obliczenia siły aerodynamicznej, jeśli Workspace.FluidForces jest Experimental .Domyślny odpowiada realistycznej gęstości powietrza na poziomie morza przy standardowej temperaturze i ciśnieniu.Gęstość powietrza spada wraz z wzrostem wysokości Y , osiągając 5% wartości poziomu ziemi na 100 000 metrów.Poniżej Y z 0, gęstość powietrza jest ustawiona na wartość wejściową.
AllowThirdPartySales
Ta właściwość Workspace określa, czy zasoby stworzone przez inne użycia mogą być sprzedane w gra.
Czym są sprzedaże stron trzecich?
Gdy ta wartość jest fałszywa, jak to jest domyślnie, tylko aktywa stworzone przez twórcę miejsca (czy to gracz czy grupa) i Roblox mogą być sprzedawane za pomocą MarketplaceService .
W większości przypadków gry nie muszą sprzedawać zasobów stron trzecich.Jednak niektóre gry, takie jak wymiana rozmów, wymagają tej funkcji i dlatego istnieją jako opcja do wyboru.
Jakie produkty stron trzecich mogę sprzedawać?
Uwaga, produkty dla programistów można sprzedawać tylko w grze, z którą są powiązane, niezależnie od tego, jaki jest ustawiony parametr AllowThirdPartySales.Właściwość ta wpływa na przepustki do gry i odzież.
AvatarUnificationMode
ClientAnimatorThrottling
Określa Enum.ClientAnimatorThrottlingMode do użycia dla lokalnego klienta.
Po włączeniu animacje na zdalnie symulowanych instancjach Model zaczną się kurczyć. Ogranicznik oblicza intensywność ograniczania za pomocą:
- strzelanki FPSw grze
- Liczba aktywnych animacji
CurrentCamera
Obiekt Camera używany przez lokalnego gracza.
Jak używać kamerę obecną
Szukając obiektu klienta Camera, użyj tej właściwości zamiast szukać dziecka o nazwie Workspace o nazwie "Kamera".
Kiedy ustawisz tę właściwość, wszystkie inne obiekty Camera w Workspace zostaną zniszczone, w tym poprzednie CurrentCamera.Jeśli ustawisz tę właściwość na nil lub do kamery, która nie jest potomkiem przestrzeni roboczej (lub CurrentCamera jest w inny sposób zniszczona), zostanie utworzona i przydzielona nowa Camera.Unikaj tych scenariuszy, ponieważ niszczenie kamery może mieć niezamierzone konsekwencje.
Aby uzyskać więcej informacji, zobacz Programowanie kamery.
DistributedGameTime
Ilość czasu, w sekundach, przez które gra działa.
Pomimo tytułu, ta wartość nie jest obecnie "Rozproszona" na klientzie i serwerze.Zamiast tego na serwerze reprezentuje czas, jaki serwer działa.Na klientzie reprezentuje to, jak długo klient był połączony z serwerem.
Twórcy nie powinni polegać na powyższym zachowaniu, a możliwe jest, że w przyszłości ta właściwość zostanie zsynchronizowana między klientami i serwerem.
Ci, którzy szukają czasu odkąd program zaczął działać, powinni zamiast tego używać funkcji 'time'.Zobacz poniżej porównanie między DistributedGameTime a jego alternatywami.
local Workspace = game:GetService("Workspace")print(Workspace.DistributedGameTime) -- Time the game started runningprint(os.time()) -- Time since epoch (1 January 1970, 00:00:00) UTCprint(tick()) -- Time since epoch (1 January 1970, 00:00:00) system timeprint(time()) -- Time the game started runningprint(elapsedTime()) -- Time since Roblox started running
FallHeightEnabled
FallenPartsDestroyHeight
Właściwość ta określa wysokość, na której silnik Roblox automatycznie usuwa spadające BaseParts i ich przodków Models z Workspace przez rodzicielstwo ich do nil .Ma to zapobiec częściom, które wypadły z mapy, od dalszego spadania na zawsze.
Jeśli część została usunięta z powodu tego zachowania jest ostatnią częścią w Model, model ten również zostanie usunięty.Obejmuje to wszystkie przodki modelowe części.
Właściwość ta jest ograniczona między -50,000 a 50,000, ponieważ BaseParts nie symuluje lub nie renderuje prawidłowo na dużej odległości od źródła ze względu na nieścisłości punktów zwrotnych.
Właściwość ta może być odczytywana przez skrypty, ale może być ustawiona tylko przez wtyczki, pasek poleceń lub okno właściwości w Studio.
FluidForces
Z włączoną tą właściwością silnik fizyczny oblicza siły aerodynamiczne na BaseParts, której właściwość EnableFluidForces jest prawdą.Domyślny, Default , wyłącza siły aerodynamiczne.Zauważ, że ta właściwość nie może być ustawiona za pomocą skryptowania i zamiast tego musi być przełączona w Studio.
GlobalWind
Właściwość ta określa kierunek i siłę, przez którą wiatr wieje przez doświadczenie, wpływając na trawę terenu, dynamiczne chmury i cząstki.Zobacz artykuł Globalny wiatr dla szczegółów.
Gravity
Określa przyspieszenie z powodu grawitacji zastosowane do spadania BaseParts .Wartość ta jest mierzona w szpilkach na sekundę kwadratowane i domyślnie ustawiona na 196,2 szpilki na sekundę 2.Zmieniając tę wartość, programiści mogą symulować efekty niższej lub wyższej grawitacji w grze.
Przykłady kodu
This script creates a touch pad in the workspace that, when touched, will reduce the game's gravity. Activating the pad again will switch back to normal gravity.
local MOON_GRAVITY_RATIO = 1.62 / 9.81
local DEFAULT_GRAVITY = 196.2
local MOON_GRAVITY = DEFAULT_GRAVITY * MOON_GRAVITY_RATIO
-- Create a touch pad
local pad = Instance.new("Part")
pad.Size = Vector3.new(5, 1, 5)
pad.Position = Vector3.new(0, 0.5, 0)
pad.Anchored = true
pad.BrickColor = BrickColor.new("Bright green")
pad.Parent = workspace
-- Listen for pad touch
local enabled = false
local debounce = false
local function onPadTouched(_hit)
if not debounce then
debounce = true
enabled = not enabled
workspace.Gravity = enabled and MOON_GRAVITY or DEFAULT_GRAVITY
pad.BrickColor = enabled and BrickColor.new("Bright red") or BrickColor.new("Bright green")
task.wait(1)
debounce = false
end
end
pad.Touched:Connect(onPadTouched)
IKControlConstraintSupport
Włącza wsparcie dla ograniczeń dla IKControls.Wartość Default jest taka sama jak Enabled.Jeśli jest wyłączone, IKControls ignorują ograniczenia fizyczne.Zobacz IKControl dla dodatkowych szczegółów.
InsertPoint
MeshPartHeadsAndAccessories
Ustawia, czy głowy i akcesoria postaci powinny być pobierane jako MeshParts .Wartość Default jest taka sama jak Enabled.Jeśli ta funkcja jest włączona, wbudowane awatary będą używać MeshParts dla głowy i akcesoriów postaci.
ModelStreamingBehavior
MoverConstraintRootBehavior
Kontroluje logikę używaną do wyboru części korzenia zbioru dla mechanizmów, które wykorzystują jedną z następujących ograniczeń:
Gdy ta właściwość jest ustawiona na Enum.MoverConstraintRootBehaviorMode.Enabled, ograniczenia zostaną zignorowane podczas wyboru części korzenia zbioru, jeśli ograniczenie nie przekazuje sił między dwoma częściami (niektóre przykłady to AngularVelocity.ReactionTorqueEnabled ustawione na false , AlignPosition.ReactionForceEnabled ustawione na false lub AlignOrientation.Mode ustawione na Enum.OrientationAlignmentMode.OneAttachment ).
Gdy właściwość ta jest ustawiona na Enum.MoverConstraintRootBehaviorMode.Disabled, ograniczenia te mogą być błędnie rozważane przy wyborze części korzenia zbioru, co prowadzi do niezgodnego własności sieci i opóźnień przy dodawaniu tych ograniczeń do mechanizmu.
PathfindingUseImprovedSearch
PhysicsImprovedSleep
PhysicsSteppingMethod
Ustawia, w jaki sposób rozwiązanie zaawansuje symulację fizyczną w czasie.Ta opcja nie jest skryptowalna i musi być ustawiona z właściwością PhysicsSteppingMethod z Przestrzenią roboczą w Studio.Zobacz Adaptacyjne planowanie czasu dla szczegółów.
<th>Opis</th></tr></thead><tbody><tr><td><b>Adaptacyjny</b></td><td>Silnik próbuje przypisać optymalne szybkości symulacji dla pojedynczych zespołów o częstotliwości 240 Hz, 120 Hz lub 60 Hz.To ustawienie jest zoptymalizowane pod kątem wykonywanie.</td></tr><tr><td><b>Naprawiono</b></td><td>Wszystkie symulowane zespoły w środowisku roboczym będą przesuwane do przodu z częstotliwością 240 Hz. Ta opcja jest najlepsza dla optymalnej stabilności i dokładności symulacji.</td></tr><tr><td><b>Domyślny</b></td><td>Domyślny obecny jest <b>Naprawiony</b>.</td></tr></tbody>
Opcja |
---|
Zauważ, że gdy zespoły różnych szybkości symulacji są połączone za pomocą Constraints lub kolizji, połączony mechanizm domyślnie ustawi najwyższą szybkość symulacji dla stabilności.
PlayerCharacterDestroyBehavior
PrimalPhysicsSolver
RejectCharacterDeletions
RenderingCacheOptimizations
ReplicateInstanceDestroySetting
Retargeting
SandboxedInstanceMode
SignalBehavior
Właściwość ta określa, czy obsługiwacze zdarzeń zostaną wznowieni natychmiast po wystąpieniu zdarzenia, czy też zostaną odroczone i następnie wznowione na późniejszym punkcie wznowienia.Punkty wznowienia obejmują obecnie:
- Przetwarzanie wpisów (wznawia się raz na wpis do przetworzenia, patrz UserInputService )
- Legacy oczekiwanie na wznowienie skryptu, takie jak wait() , spawn() i delay()
Aby uzyskać więcej informacji, zobacz Opóźnione wydarzenia.
StreamOutBehavior
Sterowanie StreamOutBehavior kontroluje, gdzie treść zostanie rozładowana z pamięci urządzenia na podstawie warunków pamięci przepływu lub na podstawie promienia przesyłania.
Zobacz także:
- Workspace.StreamingEnabled który kontroluje, czy włączono przesyłanie treści
StreamingEnabled
Właściwość StreamingEnabled określa, czy transmisja treści gry jest włączona dla miejsce.Właściwość ta nie jest skryptowalna i musi zostać ustawiona na obiekcie Przestrzeni roboczej w Studio.
Zobacz także:
StreamingIntegrityMode
Jeśli instancja streamingowa jest włączona, doświadczenie może zachowywać się w niezamierzony sposób, jeśli postać gracza przeniesie się do regionu świata, który nie został przesłany do jego klienta.Funkcja integracji strumieni oferuje sposób uniknięcia tych potencjalnie problematycznych sytuacji.
StreamingMinRadius
Właściwość StreamingMinRadius wskazuje promień wokół postaci gracza lub obecnego ReplicationFocus wokół, w którym treść zostanie przesłana z najwyższym priorytetem.Domyślnie 64 szpilki.
Należy zachować ostrożność podczas zwiększania domyślnego minimalnego promienia, ponieważ zrobienie tego wymaga więcej pamięci i więcej przepustowości serwera kosztem innych komponentów.
Zobacz także:
- Workspace.StreamingEnabled który kontroluje, czy włączono przesyłanie treści
StreamingTargetRadius
Właściwość StreamingTargetRadius kontroluje maksymalną odległość od postaci gracza lub obecnego ReplicationFocus, w którym treść będzie przesyłana strumieniem.Domyślnie do 1024 szpilkami.
Zauważ, że silnik może zachować wcześniej załadowane treści poza zasięgiem celu, pamiętając o możliwościach pamięci.
Zobacz także:
- Workspace.StreamingEnabled który kontroluje, czy włączono przesyłanie treści
Terrain
Właściwość ta jest odniesieniem do obiektu Terrain należącego do Workspace .

Zobacz Teren środowiskowy dla więcej informacji.
TouchEventsUseCollisionGroups
TouchesUseCollisionGroups
Właściwość ta określa, czy parts w różnych grupach ustawione na niezderzanie się zignoruje kolizje i zdarzenia dotykowe.Domyślnie wartość tej właściwości jest ustawiona na false .
Gdy ta właściwość jest włączona, części w różnych grupach ustawione na niezderzanie się również zignorują właściwość CanTouch, podobnie jak ignorowana jest właściwość BasePart.CanCollide.Aby uzyskać więcej informacji o zachowaniu CanTouch, odwiedź jego stronę właściwości.
Metody
GetNumAwakeParts
Zwraca liczbę BaseParts, które są uważane za aktywne fizycznie, ze względu na to, że niedawno były pod wpływem fizyki.
Funkcja ta dostarcza miarę tego, jak wiele BaseParts jest wpływanych przez, lub ostatnio pod wpływem, sił fizycznych.
local Workspace = game:GetService("Workspace")print(Workspace:GetNumAwakeParts())
Śpij vs Budzne części
Aby zapewnić dobrą wykonywanie, Roblox ustawia BaseParts, w którym fizyka nie jest stosowana do stanu "śpienia".BaseParts z ustawieniem BasePart.Anchored na prawdę, na przykład zawsze będzie spał, ponieważ fizyka nie ma zastosowania do nich.Gdy siła zostanie zastosowana do niewzmocnionego BasePart, zostanie zastosowany stan "budzony".Podczas gdy BasePart jest przebudzony silnik fizyczny Roblox będzie wykonywał ciągłe obliczenia, aby zapewnić, że siły fizyczne prawidłowo interakują z częścią.Gdy BasePart przestanie być poddawany siłom fizycznym, powróci do stanu "śpienia".
Zwroty
Liczba budzonych części.
GetPhysicsThrottling
Zwraca całkowitą liczbę, pomiędzy 0 a 100, reprezentującą odsetek czasu rzeczywistego, do którego obecnie jest ograniczana symulacja fizyczna.
Funkcja ta może być używana do określenia, czy i w jakim stopniu występuje ograniczenie przepustowości fizyki.
Co to jest ograniczanie fizyki?
Ograniczanie fizyki występuje, gdy silnik fizyczny wykrywa, że nie może nadążyć za grą w czasie rzeczywistym.Kiedy fizyka jest ograniczana, aktualizuje się rzadziej, powodując, że BaseParts wydaje się poruszać wolniej.
Bez ograniczania przepustowości symulacja fizyczna będzie spadać dalej w niezgodności z grą.Może to prowadzić do niższych szybkości klatek i innych niepożądanych zachowań.
Obiekty powiązane z Humanoids są zwolnione z ograniczania fizyki.
Zobacz też Workspace:SetPhysicsThrottleEnabled().
Demonstracja ograniczania fizyki
Twórcy powinni zawsze unikać tworzenia miejsc, które obciążają silnik fizyczny, ponieważ prowadzi to do słabej wrażenia dla graczy.Ci, którzy chcą jednak symulować ograniczanie fizyki do celów badawczych, muszą jedynie szybko stworzyć wiele Parts bardzo szybko.
local Workspace = game:GetService("Workspace")local i = 0while true doi += 1if i % 5 == 0 thentask.wait()endlocal part = Instance.new("Part", Workspace)end
Zwroty
Procent czasu rzeczywistego, do którego obecnie jest ograniczana symulacja fizyczna.
GetRealPhysicsFPS
Zwraca liczbę klatek na sekundę, przy których obecnie symulowana jest fizyka.
Używanie GetRealPhysicsFPS do walki z exploiterami
Powszechnym użyciem tej funkcji jest wykrycie, czy exploiterzy zwiększają szybkość ramy fizyki lokalnej, aby poruszać się szybciej.Zazwyczaj dokonuje się tego, porównując wynik zwrócony przez GetRealPhysicsFPS klienta do maksymalnego, który nie zostanie naruszony w normalnych warunkach (zwykle 65 lub 70).Jeśli ten limit zostanie naruszony, programiści mogą użyć funkcji Player:Kick(), aby usunąć to Player z gry.Ważne jest, aby pamiętać, że choć praktyka ta może być skuteczna czasami, środki zapobiegające nadużyciom strony klienta nigdy nie są w 100% niezawodne.
Zwroty
Zwraca liczbę klatek na sekundę, przy których obecnie symulowana jest fizyka.
Przykłady kodu
Speed exploiters commonly increase their local physics FPS in order to increase their character speed. This can be detected from a LocalScript by checking if the player's physics FPS is over the maximum:
local Players = game:GetService("Players")
local player = Players.LocalPlayer
while task.wait(1) do
if workspace:GetRealPhysicsFPS() > 65 then
player:Kick()
end
end
GetServerTimeNow
GetServerTimeNow() zwraca najlepszą aproximację klienta dotyczącą obecnego czasu na serwerze.Jest to przydatne do tworzenia zsynchronizowanych doświadczeń, ponieważ każdy klient otrzyma takie same wyniki niezależnie od strefy czasowej lub lokalnego czasu.
Wywraca to czasoprzestrzeń Unix podobny do os.time(), który można używać z os.date() lub z DateTime.fromUnixTimestamp().
Czas powrotu czasu przez tę funkcję jest wygładzony tak, że:
- Jest monotoniczny; jego wartość nigdy nie zmniejszy się.
- Porusza się z taką samą prędkością jak lokalny zegar do 0,6%.
GetServerTimeNow() jest drogie do wywołania w porównaniu do DateTime.now() i jest mniej precyzyjne niż os.clock() , więc powinno być używane, aby upewnić się, że wydarzenie rozpocznie się w odpowiednim czasie rzeczywistym lub dostosowywać rzeczy okresowo, aby utrzymać serię wydarzeń w zgodności.
Funkcja ta polega na serwerze, więc wezwanie jej z klienta, który nie jest połączony, spowoduje błąd.Zauważ też, że ta funkcja nie jest odpowiednia do rzeczy takich jak czasowe nagrody, ponieważ nie jest bezpieczna w porównaniu do śledzenia takich czasomierzy na serwerze.
Zobacz także:
- DistributedGameTime , zegar czasu gry
Zwroty
Szacowany czas戳 Unix na serwerze.
JoinToOutsiders
Funkcja ta tworzy stawy między określonymi Parts i dowolnymi częściami dotykającymi w zależności od powierzchni części i określonego trybu tworzenia stawów.
Funkcja ta tworzy połączenia między określonymi częściami i dowolnymi płaskimi powierzchniami dotykającymi, w zależności od powierzchni części i określonego trybu tworzenia połączeń.
- Klej, klamry, wloty, uniwersalne, spawanie i gładkie powierzchnie wszystkie utworzą instancje spawania.
- Sfery nie będą spawane powierzchniowo do niczego. Zakrzywione strony cylindrów nie będą spawane powierzchniowo, ale płaskie strony końcowe będą.
Pierwszy parametr to tablica BaseParts.Stawy zostaną utworzone tylko między częściami w matrycy, a nie w matrycy.Nie zostaną utworzone stawy między częściami w matrycy.
Drugim parametrem jest Enum.JointCreationMode, który określa, jak powstają stawy.Przekazanie wartości enum, Enum.JointCreationMode.All lub Enum.JointCreationMode.Surface , ma takie samo zachowanie, które odpowiada Zawsze dołączaj
Funkcja ta jest używana przez narzędzie Przesuwania w Roblox Studio Studio, gdy użytkownik kończy przesuwanie wyboru.W połączeniu z Plugin:GetJoinMode() i Workspace:UnjoinFromOutsiders() może być używany do zachowania funkcjonalności połączenia podczas opracowywania niestandardowych narzędzi budowania studio.Zobacz kodowania poniżej dla przykładu.
local Workspace = game:GetService("Workspace")
-- Zakończono przesuwanie wyboru; utwórz stawy
local function finishedMovingParts(parts)
local joinMode = Plugin:GetJoinMode()
Workspace:JoinToOutsiders(parts, joinMode)
end
local Workspace = game:GetService("Workspace")
-- Zaczęto przesuwać wybór; złamuj stawy
local function startMovingParts(parts)
Workspace:UnjoinFromOutsiders(parts)
end
Parametry
Zbiór BaseParts dla którego mają być wykonane połączenia.
Do użycia jest Enum.JointCreationMode . Przekazanie Enum.JointCreationMode.All lub Enum.JointCreationMode.Surface ma takie samo zachowanie, które odpowiada Zawsze dołączaj.
Zwroty
PGSIsEnabled
Wyświetla true jeśli gra ma włączony rozwiązacz PGS Physics.
Ponieważ Workspace.PGSPhysicsSolverEnabled, funkcja PGSIsEnabled pozwala programistom powiedzieć, z jakim rozwiązaniem fizycznym gra korzysta.
Zwroty
Prawda, jeśli włączono rozwiązanie PGS.
UnjoinFromOutsiders
Łamie wszystkie stawy między określonym BaseParts a innym BaseParts.
Ta funkcja wymaga matrycy BaseParts.Uwaga, stawy nie zostaną złamane między tymi BaseParts (między sobą), tylko między tymi BaseParts i innymi BaseParts nie w array.
Funkcja ta jest używana przez narzędzie Przesuwania w Roblox Studio Studio, gdy użytkownik zaczyna przesuwać wybór.W połączeniu z Plugin:GetJoinMode() i Workspace:JoinToOutsiders() może być używany do zachowania funkcjonalności połączenia podczas opracowywania niestandardowych narzędzi budowania Studio.Zobacz kodowania poniżej dla przykładu.
local Workspace = game:GetService("Workspace")
-- Finished moving a selection; make joints
local function finishedMovingParts(parts)
local joinMode = Plugin:GetJoinMode()
Workspace:JoinToOutsiders(parts, joinMode)
end
local Workspace = game:GetService("Workspace")
-- Started moving a selection; break joints
local function startMovingParts(parts)
Workspace:UnjoinFromOutsiders(parts)
end
Parametry
Matryca BaseParts.
Zwroty
ZoomToExtents
Pozycje i powiększenia Workspace.CurrentCamera pokazują zakres BaseParts obecnie w Workspace.
Funkcja ta była używana w teraz usuniętym przycisku "Przybliż do rozmiarów" w Roblox Studio.Pokazuje podobne zachowanie do funkcja"Przybliż do" (F skrót), jednak pokazuje rozmiary Workspace zamiast wybranego obiektu.
Funkcja ta nie może być używana w skryptach, ale będzie działać w pasku poleceń lub wtyczkach.
Zwroty
Zdarzenia
PersistentLoaded
To wydarzenie wystrzeliwuje za każdym razem, gdy gracz otrzymał wszystkie aktualne trwałe modele i bezwzględne modele atomowe bez części.Parametr player wskazuje, który gracz otrzymał wszystkie odpowiednie instancje.
Zauważ, że ładowanie doświadczenia następuje przed trwałym ładowaniem i wystrzelaniem wydarzenia DataModel.Loaded, co nie oznacza, że wszystkie trwałe modele są obecne.