RigidBody3D w Godot 4 jest węzłem fizyki, który pozwala na tworzenie dynamicznych obiektów w przestrzeni 3D. Jest to kluczowy element do symulowania rzeczywistych zachowań fizycznych, takich jak ruch, zderzenia, siły, grawitacja i moment obrotowy. Obiekty RigidBody3D mogą się poruszać, obracać, przewracać i zderzać z innymi obiektami zgodnie z prawami fizyki.

Cechy RigidBody3D:
- Dynamiczne zachowanie:
RigidBody3Dreaguje na siły zewnętrzne (jak grawitacja, zderzenia, impulsy). Można nim swobodnie sterować, dodając siły, prędkość, momenty obrotowe itp. - Interakcje z innymi obiektami fizyki: RigidBody3D oddziałuje z innymi węzłami fizyki, jak
StaticBody3D(statyczne obiekty) iArea3D(obszary wykrywające zdarzenia). - Wbudowane wsparcie dla kształtów kolizji:
RigidBody3DwymagaCollisionShape3D, aby definiować obszar, który może wchodzić w interakcję z innymi obiektami.
Typy trybów pracy RigidBody3D:
- Dynamic (Dynamiczny):
- Standardowy tryb, w którym obiekt jest w pełni dynamiczny i podlega siłom fizycznym. Możesz go przesuwać, obracać, zderzać z innymi obiektami, a także dodawać siły i impulsy.
- Static (Statyczny):
RigidBody3Dzachowuje się jakStaticBody3D. Może kolidować z innymi obiektami, ale nie porusza się pod wpływem sił. Przydatne, gdy chcesz tymczasowo zablokować ruch obiektu.
- Kinematic (Kinematyczny):
- Umożliwia ręczne kontrolowanie pozycji i obrotu obiektu bez wpływu sił fizycznych. Idealny do kontrolowania ruchu, który nie podlega fizyce (np. postać gracza).
- Character (Postać):
- Specjalny tryb przeznaczony do postaci sterowanych przez gracza. Ma cechy dynamiczne, ale z dodatkowym wsparciem dla ruchu postaci, np. chodzenia po powierzchniach.
Jak używać RigidBody3D:
1. Dodanie RigidBody3D do sceny
- W drzewie scen kliknij „Dodaj węzeł”.
- Wyszukaj
RigidBody3Di dodaj go do swojej sceny. - Dodaj jako dziecko
CollisionShape3D, aby określić kształt kolizji (np.BoxShape3D,SphereShape3D,CapsuleShape3D).
Przykład:
MainScene
├── RigidBody3D
│ ├── CollisionShape3D (BoxShape3D)
└── MeshInstance3D (BoxMesh)
2. Ustawienie kształtu kolizji i siatki
- Dodaj
MeshInstance3Djako dzieckoRigidBody3D, aby wizualnie reprezentować obiekt (np.BoxMesh). - Dostosuj wymiary
BoxShape3Dw inspektorze, aby dopasować kształt kolizji do siatki.
3. Sterowanie RigidBody3D w skrypcie
Możesz kontrolować ruch RigidBody3D za pomocą skryptu, używając funkcji do dodawania sił, prędkości i momentów obrotowych:
Przykłady skryptów:
a. Dodanie siły do obiektu:
extends RigidBody3D
func _ready():
# Dodanie siły w kierunku w prawo (oś X)
apply_central_force(Vector3(10, 0, 0))
b. Dodanie impulsu (jednorazowego pchnięcia):
extends RigidBody3D
func _ready():
# Dodanie impulsu w kierunku góry (oś Y)
apply_impulse(Vector3.ZERO, Vector3(0, 5, 0))
c. Zmiana prędkości RigidBody3D:
extends RigidBody3D
func _ready():
# Ustawienie prędkości początkowej
linear_velocity = Vector3(5, 0, 0) # Porusza się w prawo
4. Dostosowanie właściwości RigidBody3D w inspektorze
RigidBody3D ma wiele właściwości, które można dostosować w inspektorze, aby kontrolować jego zachowanie:
Mass(Masa): Określa masę obiektu. Większa masa oznacza, że obiekt trudniej przyspieszyć i zatrzymać.Friction(Tarcza): Określa, jak bardzo obiekt opiera się ruchowi w kontakcie z innymi powierzchniami.Bounce(Odbicie): Określa, jak bardzo obiekt odbija się od innych obiektów. Wartość0oznacza brak odbicia, a1oznacza pełne odbicie.Gravity Scale: Skalowanie grawitacji działającej na ten obiekt. Możesz ustawić większą lub mniejszą grawitację tylko dla tego obiektu.
5. Interakcje RigidBody3D z innymi węzłami fizyki
- Zderzenia z
StaticBody3D:RigidBody3Dbędzie reagować na kolizje zStaticBody3D, np. zatrzymując się, odbijając lub zmieniając kierunek. - Zderzenia z innymi
RigidBody3D: Oba obiekty będą na siebie oddziaływać zgodnie z ich masą, prędkością i właściwościami fizycznymi (np. tarciem, odbiciem). - Detekcja w
Area3D:RigidBody3Dmoże wchodzić wArea3D, co pozwala na wykrywanie zdarzeń, takich jak przejście przez obszar wyzwalacza (trigger).
6. Przykłady zastosowania RigidBody3D w grze
- Rzucane obiekty: Tworzenie kul, skrzynek lub innych przedmiotów, które mogą być podnoszone, rzucane i odbijać się od innych obiektów.
- Fizyka pojazdów: Ustawienie kołowych
RigidBody3Ddla fizyki samochodowej, motocykli, itp. - Zarządzanie pociskami i projektilami: Przypisanie właściwości dynamicznych do pocisków, które poruszają się i zderzają z innymi obiektami.
7. Dynamiczne tworzenie RigidBody3D w kodzie
Możesz również dynamicznie tworzyć RigidBody3D w skrypcie, co pozwala na tworzenie fizycznych obiektów w czasie działania gry:
Przykład:
extends Node3D
func _ready():
var rigid_body = RigidBody3D.new()
var collision_shape = CollisionShape3D.new()
var box_shape = BoxShape3D.new()
box_shape.extents = Vector3(1, 1, 1)
collision_shape.shape = box_shape
rigid_body.add_child(collision_shape)
rigid_body.linear_velocity = Vector3(5, 0, 0) # Ustawienie prędkości początkowej
add_child(rigid_body)
Podsumowanie:
RigidBody3D to wszechstronny i potężny węzeł w Godot 4, który pozwala na dynamiczne zachowanie fizyczne obiektów w grze. Można go używać do symulowania rzeczywistych zderzeń, ruchu, odbić i interakcji z innymi obiektami fizyki. Umożliwia dostosowanie wielu parametrów, takich jak masa, tarcie, odbicie i prędkość, a także dynamiczne kontrolowanie zachowania obiektów za pomocą sił, impulsów i prędkości.
Dzięki RigidBody3D można tworzyć realistyczne scenariusze fizyczne, takie jak przesuwające się
skrzynki, zderzające się pojazdy, podskakujące piłki i wiele innych.





Dodaj komentarz