PhysicsService
*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.
PhysicsService głównie zawiera metody do pracy z grupami kolizyjnymi , które określają, czy zestaw części może lub nie może zderzać się z częściami w innych grupach kolizyjnych.Możesz zarejestrować grupę kolizyjną za pomocą i przypisać do niej części, ustawiając właściwość tych części na nazwę grupy kolizyjnej.
Tworzenie, usuwanie i modyfikowanie relacji kolizyjnych między grupami kolizyjnymi ogranicza się do strony serwera Scripts.
Zobacz Filtrowanie kolizji dla szczegółów użycia w Studio i w skryptach.
Podsumowanie
Metody
Ustawia stan kolizji między dwiema grupami.
Zwraca, czy dwie grupy się zderzą.
Zwraca maksymalną liczbę grup kolizji.
Zwraca tabelę z informacjami o wszystkich grupach kolizyjnych miejsce.
Sprawdza, czy grupa kolizyjna jest zarejestrowana.
Rejestruje nową grupę kolizji z podaną nazwą.
Zmienia nazwę określonej grupakolizji.
Rozrejestruje grupę kolizji dla podanej nazwy.
Właściwości
Metody
CollisionGroupSetCollidable
Ustawia stan kolizji między dwiema grupami.Ta metoda wyświetli błąd, jeśli jedna z grup nie jest zarejestrowana, dlatego zaleca się potwierdzenie rejestracji każdej z nich poprzez PhysicsService:IsCollisionGroupRegistered() przed dokonaniem tego wezwania.
Parametry
Zwroty
CollisionGroupsAreCollidable
Zwraca, czy dwie określone grupy kolizyjne się zderzą.Ta metoda zwróci również prawdę, jeśli jedna z grup nie jest zarejestrowana, ponieważ domyślna maska kolizji zderza się ze wszystkimi grupami.
Parametry
Zwroty
GetMaxCollisionGroups
Zwraca maksymalną liczbę grup kolizji, które silnik wspiera. Wartość ta wynosi obecnie 32.
Zwroty
GetRegisteredCollisionGroups
Zwraca tabelę z informacjami o wszystkich grupach kolizyjnych miejsce. Każda wartość w zwróconej tabeli jest sama tabelą i zawiera dwa członków:
<th>Typ</th><th>Opis</th></tr></thead><tbody><tr><td>maszka</td><td>liczba całkowita</td><td>Maska grupakolizyjnej; tylko do użytku wewnętrznego.</td></tr><tr><td>nazwa</td><td>ciąg</td><td>Nazwa grupakolizji.</td></tr></tbody>
Członek |
---|
Zwroty
IsCollisionGroupRegistered
Sprawdza, czy grupa kolizyjna jest zarejestrowana.Zaleca się, abyś wezwał tę metodę przed wezwaniem metod, które wysuwają błędy dla niezarejestrowanych grup kolizyjnych, takich jak PhysicsService:CollisionGroupSetCollidable().
Parametry
Zwroty
RegisterCollisionGroup
Rejestruje nową grupę kolizji z podaną nazwą. Nazwa nie może być "Default".
Zauważ, że ta metoda ma niewielki przepięcie wydajności w oparciu o liczbę w przestrzeni roboczej, więc zaleca się zarejestrowanie wszystkich grup kolizji w czasie edycji za pośrednictwem edytora Studio i wezwanie i tak rzadko, jak to możliwe.
Parametry
Zwroty
Przykłady kodu
This example demonstrates one basic use of collision groups. It assigns BallPart to "CollisionGroupBall" and DoorPart to "CollisionGroupDoor", then makes the two groups non-collidable using PhysicsService:CollisionGroupSetCollidable().
local PhysicsService = game:GetService("PhysicsService")
local collisionGroupBall = "CollisionGroupBall"
local collisionGroupDoor = "CollisionGroupDoor"
-- Register collision groups
PhysicsService:RegisterCollisionGroup(collisionGroupBall)
PhysicsService:RegisterCollisionGroup(collisionGroupDoor)
-- Assign parts to collision groups
script.Parent.BallPart.CollisionGroup = collisionGroupBall
script.Parent.DoorPart.CollisionGroup = collisionGroupDoor
-- Set groups as non-collidable with each other and check the result
PhysicsService:CollisionGroupSetCollidable(collisionGroupBall, collisionGroupDoor, false)
print(PhysicsService:CollisionGroupsAreCollidable(collisionGroupBall, collisionGroupDoor)) --> false
RenameCollisionGroup
Zmienia nazwę określonej zarejestrowanej grupy kolizji, ale nie zmienia nazwy właściwości części, które wykorzystują grupę.Pierwszy argument tej metody to nazwa grupy do zmiany nazwy, drugi argument to nowa nazwa dla grupy.Jeśli określona grupa nie istnieje, ta metoda nic nie zrobi.Konwencje nazywania dla nowej nazwy podążają za tymi samymi zasadami, jak gdyby grupa była tworzona za pomocą RegisterCollisionGroup().
Ta metoda wyśle błąd czasu wykonania w następujących przypadkach:
- Nieprawidłowa lub pusta nazwa przypisana do któregokolwiek argumentu.
- Metoda jest wywoływana z klienta.
Zauważ, że ta metoda ma niewielki przepięcie wydajności w oparciu o liczbę w przestrzeni roboczej, więc zaleca się zarejestrowanie wszystkich grup kolizji w czasie edycji za pośrednictwem edytora Studio i zmianę ich nazwy tak rzadko, jak to możliwe.
Parametry
Zwroty
UnregisterCollisionGroup
Rozrejestruje grupę kolizji dla podanej nazwy z następującymi zachowaniami:
- Jeśli podano nieprawidłową nazwę, metoda nic nie zrobi.
- Jeśli zarezerwowana nazwa "Default" zostanie podana lub jeśli metoda zostanie wywołana z klienta, wyśle błąd.
- Jeśli istnieją jakiekolwiek części w grupie kolizji po jej usunięciu, te części nadal będą posiadały tę samą nazwę grupy kolizji.Fizyczne zachowanie części w usuniętej grupie jest niedefiniowane, więc zaleca się przeniesienie każdej części w usuniętej grupie do innej grupy, takiej jak grupa "Default".
Zauważ, że ta metoda ma niewielki przepięcie wydajności w oparciu o liczbę w przestrzeni roboczej, więc zaleca się zarejestrowanie wszystkich grup kolizji w czasie edycji za pośrednictwem edytora Studio i wezwanie tej metody tak rzadko, jak to możliwe.