PhysicsService

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
Usługa

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

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

name1: string
Wartość domyślna: ""
name2: string
Wartość domyślna: ""
collidable: boolean
Wartość domyślna: ""

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

name1: string
Wartość domyślna: ""
name2: string
Wartość domyślna: ""

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

name: string
Wartość domyślna: ""

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

name: string
Wartość domyślna: ""

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().

PhysicsService:RegisterCollisionGroup

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

from: string
Wartość domyślna: ""
to: string
Wartość domyślna: ""

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.

Parametry

name: string
Wartość domyślna: ""

Zwroty

()

Zdarzenia