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
StaticBody3Dsą nieruchome, co oznacza, że nie zmieniają swojej pozycji pod wpływem sił (np. grawitacji). Inne obiekty dynamiczne (jakRigidBody3D) mogą wchodzić z nimi w interakcje, aleStaticBody3Dpozostają 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
StaticBody3Di 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
StaticBody3Dw drzewie scen i dodajCollisionShape3Djako dziecko. - W inspektorze
CollisionShape3Dwybierz 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
StaticBody3Djako 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
StaticBody3Ddo sceny. - Dodaj
CollisionShape3Djako dziecko doStaticBody3D. - W inspektorze wybierz
BoxShape3Djako 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)
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
CollisionShape3Djako dziecko i wybierzMeshShape3D. - Załaduj siatkę do
MeshShape3D, aby kolizja pasowała do złożonego kształtu modelu.
7. Zalety i ograniczenia StaticBody3D
Zalety:
- Wydajność:
StaticBody3Dnie 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ć
RigidBody3DlubCharacterBody3D. - 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:
StaticBody3Duż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ń.





Dodaj komentarz