StaticBody3D
w Godot 4 jest węzłem służącym do tworzenia statycznych obiektów fizycznych w środowisku 3D. Obiekty te nie poruszają się, ale inne obiekty mogą z nimi kolidować. Idealnie nadaje się do reprezentowania stałych elementów sceny, takich jak ściany, podłogi, przeszkody, teren, budynki itp.
Cechy StaticBody3D
:
- Statyczność: Obiekty
StaticBody3D
są nieruchome, co oznacza, że nie zmieniają swojej pozycji pod wpływem sił (np. grawitacji). Inne obiekty dynamiczne (jakRigidBody3D
) mogą wchodzić z nimi w interakcje, aleStaticBody3D
pozostają nieruchome. - Efektywność: Ze względu na brak ruchu, są bardzo wydajne do użycia w scenach, ponieważ silnik fizyki nie musi obliczać ich ruchu.
Jak używać StaticBody3D
:
1. Dodawanie StaticBody3D
do sceny
- W drzewie scen kliknij „Dodaj węzeł”.
- Wyszukaj
StaticBody3D
i dodaj go do swojej sceny. - Dodaj dziecko
CollisionShape3D
, aby określić kształt kolizji.
2. Dodanie kształtu kolizji do StaticBody3D
StaticBody3D
nie będzie miało kolizji, dopóki nie dodasz do niego węzła CollisionShape3D
, który definiuje, gdzie inne obiekty mogą zderzać się z StaticBody3D
.
- Kliknij prawym przyciskiem na
StaticBody3D
w drzewie scen i dodajCollisionShape3D
jako dziecko. - W inspektorze
CollisionShape3D
wybierz odpowiedni kształt kolizji (np.BoxShape3D
,SphereShape3D
,CapsuleShape3D
,MeshShape3D
). - Dostosuj kształt, aby pasował do siatki lub obiektu, który reprezentuje.
3. Użycie StaticBody3D
do terenu, ścian i przeszkód
StaticBody3D
jest idealny do reprezentowania elementów sceny, które pozostają nieruchome, takich jak:
- Podłogi i ściany: Twórz nieruchome elementy, które ograniczają ruch graczy lub obiektów dynamicznych.
- Przeszkody i bariery: Dodawaj przeszkody, które będą blokować inne obiekty.
- Teren: Użyj
StaticBody3D
jako podstawy dla kolizji terenu, aby gracze i inne obiekty mogły się po nim poruszać.
4. Przykład prostego StaticBody3D
z kolizją
Załóżmy, że chcesz stworzyć prostą ścianę, którą inne obiekty będą mogły uderzyć, ale ona sama pozostanie nieruchoma.
- Dodaj
StaticBody3D
do sceny. - Dodaj
CollisionShape3D
jako dziecko doStaticBody3D
. - W inspektorze wybierz
BoxShape3D
jako kształt kolizji i dostosuj jego wymiary. - Dodaj opcjonalnie
MeshInstance3D
, aby wizualnie reprezentować ścianę (możesz użyćBoxMesh
).
MainScene
├── StaticBody3D
│ ├── CollisionShape3D (BoxShape3D)
└── MeshInstance3D (BoxMesh)
5. Dynamiczne tworzenie StaticBody3D
w kodzie
Możesz także dynamicznie tworzyć statyczne obiekty w kodzie, jeśli potrzebujesz dodawać je w trakcie działania gry.
extends Node3D
func _ready():
var static_body = StaticBody3D.new()
var collision_shape = CollisionShape3D.new()
var box_shape = BoxShape3D.new()
box_shape.extents = Vector3(1, 1, 1)
collision_shape.shape = box_shape
static_body.add_child(collision_shape)
add_child(static_body)</code></pre>
6. Użycie MeshShape3D
do kolizji z importowanymi modelami
Jeśli chcesz, aby StaticBody3D
miało bardziej złożony kształt kolizji, np. dla importowanych modeli, możesz użyć MeshShape3D
:
- Stwórz
StaticBody3D
.
- Dodaj
CollisionShape3D
jako dziecko i wybierz MeshShape3D
.
- Załaduj siatkę do
MeshShape3D
, aby kolizja pasowała do złożonego kształtu modelu.
7. Zalety i ograniczenia StaticBody3D
Zalety:
- Wydajność:
StaticBody3D
nie potrzebuje ciągłych obliczeń fizyki, co czyni go bardzo efektywnym dla stałych elementów sceny.
- Stabilność: Statyczne obiekty są stabilne i niezależne od sił, dzięki czemu idealnie nadają się do budowy świata gry.
- Wszechstronność: Można ich używać w połączeniu z różnymi typami kolizji (proste kształty, siatki).
Ograniczenia:
- Brak ruchu: Nie można ich poruszać lub obracać, gdy są pod wpływem fizyki (chyba że manualnie zmienisz ich transformację). Do ruchomych obiektów lepiej używać
RigidBody3D
lub CharacterBody3D
.
- Skomplikowane kolizje mogą być kosztowne: Używanie złożonych siatek kolizyjnych może wpłynąć na wydajność. Warto stosować uproszczone kształty, kiedy to możliwe.
8. Przykłady użycia StaticBody3D
w grze
- Teren i podłoga:
StaticBody3D
używany do reprezentacji podłogi lub terenu, po którym poruszają się gracze.
- Ściany budynków: Tworzenie ścian i przeszkód, które blokują ruch gracza lub pocisków.
- Dekoracje z kolizjami: Przedmioty takie jak kamienie, meble, elementy architektoniczne, które mają kolizję, ale nie mogą być przesuwane.
Podsumowanie:
StaticBody3D
to kluczowy węzeł fizyki w Godot 4, który pozwala tworzyć statyczne obiekty z kolizjami. Jest idealny do budowy świata gry, takich jak ściany, podłogi, przeszkody i inne nieruchome elementy. Dodając CollisionShape3D
, możesz definiować różne kształty kolizji i kontrolować, jak inne obiekty będą wchodzić w interakcje z StaticBody3D
.
Jeśli masz bardziej złożone potrzeby, np. skomplikowane modele 3D, możesz użyć MeshShape3D
. W przeciwnym razie standardowe kształty takie jak BoxShape3D
czy SphereShape3D
będą idealne do większości zastosowań.
Published using WordPress Blurt Publisher from https://godot.com.pl.