This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Komponent obiektu kolizji może używać kilku kształtów podstawowych albo jednego kształtu złożonego.
Kształty podstawowe to box, sphere i capsule. Aby dodać kształt podstawowy, kliknij prawym przyciskiem myszy obiekt kolizji i wybierz Add Shape:

Kształt prostopadłościanu ma pozycję, obrót i wymiary: szerokość, wysokość oraz głębokość:

Kształt sfery ma pozycję, obrót i średnicę:

Kształt kapsuły ma pozycję, obrót, średnicę i wysokość:

Kształty kapsuły są obsługiwane tylko w fizyce 3D, skonfigurowanej w sekcji Physics pliku game.project.
Kształt złożony można utworzyć albo z komponentu mapy kafelków, albo z kształtu convex hull.
Defold zawiera funkcję, która pozwala łatwo generować kształty fizyki dla źródła kafelków używanego przez mapę kafelków. W instrukcji Tile source wyjaśniono, jak dodawać grupy kolizji do źródła kafelków i przypisywać kafelki do grup kolizji (przykład).
Aby dodać kolizję do mapy kafelków:

Zwróć uwagę, że właściwość Group nie jest tutaj używana, ponieważ grupy kolizji są definiowane w źródle kafelków mapy.
Defold zawiera funkcję pozwalającą tworzyć kształt wypukły (convex hull) z trzech lub większej liczby punktów.
.convexshape przy użyciu zewnętrznego edytora.Format pliku convex hull używa tego samego formatu danych co pozostałe pliki Defold, czyli tekstowego formatu protobuf. Kształt convex hull definiuje punkty bryły. W fizyce 2D punkty powinny być podane w kolejności przeciwnej do ruchu wskazówek zegara. W trybie fizyki 3D używana jest abstrakcyjna chmura punktów. Przykład dla 2D:
shape_type: TYPE_HULL
data: 200.000
data: 100.000
data: 0.0
data: 400.000
data: 100.000
data: 0.0
data: 400.000
data: 300.000
data: 0.0
data: 200.000
data: 300.000
data: 0.0
Powyższy przykład definiuje cztery narożniki prostokąta:
200x300 400x300
4---------3
| |
| |
| |
| |
1---------2
200x100 400x100
Istnieje kilka narzędzi zewnętrznych, których można użyć do tworzenia kształtów kolizji:
Obiekt kolizji i jego kształty dziedziczą skalę obiektu gry. Aby wyłączyć to zachowanie, odznacz pole Allow Dynamic Transforms w sekcji Physics pliku game.project. Zwróć uwagę, że obsługiwane jest tylko skalowanie jednolite, a jeśli skala nie jest jednolita, użyta zostanie najmniejsza wartość skali.
Rozmiar kształtów obiektu kolizji można zmieniać w czasie działania przy użyciu physics.set_shape(). Przykład:
-- ustaw dane kształtu kapsuły
local capsule_data = {
type = physics.SHAPE_TYPE_CAPSULE,
diameter = 10,
height = 20,
}
physics.set_shape("#collisionobject", "my_capsule_shape", capsule_data)
-- ustaw dane kształtu sfery
local sphere_data = {
type = physics.SHAPE_TYPE_SPHERE,
diameter = 10,
}
physics.set_shape("#collisionobject", "my_sphere_shape", sphere_data)
-- ustaw dane kształtu prostopadłościanu
local box_data = {
type = physics.SHAPE_TYPE_BOX,
dimensions = vmath.vector3(10, 10, 5),
}
physics.set_shape("#collisionobject", "my_box_shape", box_data)
Na obiekcie kolizji musi już istnieć kształt właściwego typu o podanym id.
Kształty kolizji w fizyce 3D można obracać wokół wszystkich osi.
Kształty kolizji w fizyce 2D można obracać tylko wokół osi Z. Obracanie wokół osi X albo Y daje nieprawidłowe wyniki i należy go unikać, nawet przy obrocie o 180 stopni, który pozornie miałby tylko odwrócić kształt wzdłuż osi X albo Y. Do odwracania kształtu fizyki zaleca się używać physics.set_hlip(url, flip) oraz physics.set_vlip(url, flip).
Możesz włączyć debugowanie fizyki, aby zobaczyć kształty kolizji w czasie działania.