StaticBody3D

in polish •  9 days ago 

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 (jak RigidBody3D) mogą wchodzić z nimi w interakcje, ale StaticBody3D 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

  1. W drzewie scen kliknij „Dodaj węzeł”.
  2. Wyszukaj StaticBody3D i dodaj go do swojej sceny.
  3. 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.

  1. Kliknij prawym przyciskiem na StaticBody3D w drzewie scen i dodaj CollisionShape3D jako dziecko.
  2. W inspektorze CollisionShape3D wybierz odpowiedni kształt kolizji (np. BoxShape3D, SphereShape3D, CapsuleShape3D, MeshShape3D).
  3. 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.

  1. Dodaj StaticBody3D do sceny.
  2. Dodaj CollisionShape3D jako dziecko do StaticBody3D.
  3. W inspektorze wybierz BoxShape3D jako kształt kolizji i dostosuj jego wymiary.
  4. 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:

  1. Stwórz StaticBody3D.
  2. Dodaj CollisionShape3D jako dziecko i wybierz MeshShape3D.
  3. 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

  1. Teren i podłoga: StaticBody3D używany do reprezentacji podłogi lub terenu, po którym poruszają się gracze.
  2. Ściany budynków: Tworzenie ścian i przeszkód, które blokują ruch gracza lub pocisków.
  3. 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.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE BLURT!