Tworzenie przedmiotów do zbierania w 2D i 3D w Godot 4 opiera się na podobnych zasadach, jednak różni się pod względem używanych węzłów, wymiarów przestrzeni oraz aspektów wizualnych i mechanicznych. Oto szczegółowe porównanie:

1. Węzły i struktura sceny
| Aspekt | 2D | 3D |
|---|---|---|
| Główny węzeł | Area2D | Area3D |
| Element graficzny | Sprite2D (obraz 2D, np. PNG) | MeshInstance3D (model 3D, np. OBJ, glTF) |
| Kształt kolizji | CollisionShape2D | CollisionShape3D |
| Przestrzeń | Płaska przestrzeń z osią X i Y. | Trójwymiarowa przestrzeń z osiami X, Y i Z. |
Przykład struktury sceny:
- 2D:
CollectibleItem (Area2D) ├── Sprite2D └── CollisionShape2D - 3D:
CollectibleItem (Area3D) ├── MeshInstance3D └── CollisionShape3D
2. Przestrzeń i pozycjonowanie
| Aspekt | 2D | 3D |
|---|---|---|
| Wymiary przestrzeni | 2 osie: X (pozioma) i Y (pionowa). | 3 osie: X (pozioma), Y (pionowa), Z (głębokość). |
| Pozycjonowanie | position (Vector2). | global_transform.origin (Vector3). |
| Kształt kolizji | Ograniczone do płaszczyzny 2D. | Kształty trójwymiarowe (np. kula, pudełko). |
Przykład pozycjonowania:
- 2D:
position = Vector2(100, 200) # Ustawienie pozycji w przestrzeni 2D - 3D:
global_transform.origin = Vector3(100, 200, 50) # Ustawienie pozycji w przestrzeni 3D
3. Grafika i estetyka
| Aspekt | 2D | 3D |
|---|---|---|
| Wygląd przedmiotu | Obraz rastrowy (np. PNG, JPEG). | Model 3D (np. OBJ, glTF) z materiałami i teksturami. |
| Efekty wizualne | Prostsze efekty, np. obrót w płaszczyźnie. | Złożone efekty, np. refleksy, cienie, animacje 3D. |
| Oświetlenie | Nie wymaga dodatkowego oświetlenia. | Wymaga konfiguracji źródeł światła. |
Przykłady:
- 2D: Animacja obrotu w osi Z:
func _process(delta): rotation_degrees += 90 * delta - 3D: Obrót w przestrzeni 3D:
func _process(delta): rotate_y(delta) # Obrót wokół osi Y
4. Kolizje i detekcja
| Aspekt | 2D | 3D |
|---|---|---|
| Kolizja | CollisionShape2D (np. okrąg, prostokąt). | CollisionShape3D (np. kula, pudełko). |
| Zdarzenie kolizji | body_entered | body_entered |
| Wykrywanie kolizji | Ograniczone do płaszczyzny 2D. | Wykrywa obiekty w pełnej przestrzeni 3D. |
Przykład obsługi kolizji:
- 2D:
func _on_body_entered(body): if body.name == "Player": queue_free() - 3D:
func _on_body_entered(body): if body.name == "Player": queue_free()
5. Fizyczne zachowanie
| Aspekt | 2D | 3D |
|---|---|---|
| Grawitacja | Prosta symulacja grawitacji w płaszczyźnie 2D. | Trójwymiarowa symulacja z pełnym wsparciem fizyki. |
| Ruch przedmiotu | Ruch liniowy lub obrót w płaszczyźnie X-Y. | Ruch w dowolnym kierunku w przestrzeni 3D. |
Przykłady:
- 2D: Przedmiot opada pod wpływem grawitacji:
velocity.y += gravity * delta position += velocity * delta - 3D: Przedmiot opada w przestrzeni 3D:
velocity.y += gravity * delta global_transform.origin += velocity * delta
6. Losowe generowanie przedmiotów
| Aspekt | 2D | 3D |
|---|---|---|
| Pozycjonowanie | Losowa pozycja w płaszczyźnie X-Y. | Losowa pozycja w przestrzeni X-Y-Z. |
Przykłady:
- 2D:
position = Vector2(randf() * 800, randf() * 600) - 3D:
global_transform.origin = Vector3(randf() * 100, 10, randf() * 100)
7. Wyzwania i ograniczenia
| Aspekt | 2D | 3D |
|---|---|---|
| Złożoność | Prostota w projektowaniu i implementacji. | Większa złożoność wizualna i mechaniczna. |
| Wydajność | Niższe wymagania sprzętowe. | Wyższe wymagania sprzętowe (zależne od grafiki 3D). |
| Perspektywa | Przedmioty zawsze widoczne w płaszczyźnie ekranu. | Może wymagać kamery do wykrywania przedmiotów. |
Podsumowanie
Tworzenie przedmiotów w 2D i 3D w Godot 4 różni się głównie w używanych węzłach, przestrzeni, efektach wizualnych i skomplikowaniu kolizji. Przedmioty w 2D są prostsze w implementacji, ale mniej realistyczne, podczas gdy przedmioty w 3D oferują większą głębię i estetykę, ale wymagają więcej pracy i zasobów sprzętowych. Wybór odpowiedniego podejścia zależy od rodzaju gry i jej wymagań.




Dodaj komentarz