Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
SoftBody3D
Успадковує: MeshInstance3D < GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
Неформована 3D фізика сітки.
Опис
Деформована 3D-фізична сітка. Використовується для створення еластичних або деформованих об'єктів, таких як тканина, гума або інші гнучкі матеріали.
Крім того, SoftBody3D підлягає силам вітру, визначеним в Area3D (див. Area3D.wind_source_path, Area3D.wind_force_magnitude та Area3D.wind_attenuation_factor).
Примітка: Рекомендується використовувати Jolt Physics під час використання SoftBody3D замість GodotPhysics3D за замовчуванням, оскільки реалізація м'якого тіла в Jolt Physics є швидшою та надійнішою. Ви можете переключити фізичний движок за допомогою налаштування проекту ProjectSettings.physics/3d/physics_engine.
Посібники
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методи
void |
add_collision_exception_with(body: Node) |
void |
apply_central_force(force: Vector3) |
void |
apply_central_impulse(impulse: Vector3) |
void |
apply_force(point_index: int, force: Vector3) |
void |
apply_impulse(point_index: int, impulse: Vector3) |
get_collision_layer_value(layer_number: int) const |
|
get_collision_mask_value(layer_number: int) const |
|
get_physics_rid() const |
|
get_point_transform(point_index: int) |
|
is_point_pinned(point_index: int) const |
|
void |
|
void |
set_collision_layer_value(layer_number: int, value: bool) |
void |
set_collision_mask_value(layer_number: int, value: bool) |
void |
set_point_pinned(point_index: int, pinned: bool, attachment_path: NodePath = NodePath(""), insert_at: int = -1) |
Переліки
enum DisableMode: 🔗
DisableMode DISABLE_MODE_REMOVE = 0
Коли Node.process_mode встановлюється на Node. PROCESS_MODE_DISABLED, видаліть з фізичного моделювання, щоб зупинити всі фізичні взаємодії з цим SoftBody3D.
Автоматично відреаговано на фізичну імітацію при обробці Node.
DisableMode DISABLE_MODE_KEEP_ACTIVE = 1
Коли Node.process_mode встановлюється на Node. PROCESS_MODE_DISABLED, не впливає на фізичне моделювання.
Описи властивостей
Фізика шарів цього SoftBody3D **is in **. Об'єкти Collision можуть існувати в одному або декількох 32 різних шарів. Дивись також collision_mask.
Примітка: Об'єкт A може виявити контакт з об'єктом B тільки якщо об'єкт B знаходиться в будь-якому з шарів, які об'єкт A сканування. Див. Коллізійні шари та маски в документації для отримання додаткової інформації.
Фізика шарів цього SoftBody3D scans. Об'єкти Collision можуть відсканувати один або більше 32 різних шарів. Дивись також collision_layer.
Примітка: Об'єкт A може виявити контакт з об'єктом B тільки якщо об'єкт B знаходиться в будь-якому з шарів, які об'єкт A сканування. Див. Коллізійні шари та маски в документації для отримання додаткової інформації.
float damping_coefficient = 0.01 🔗
Коефіцієнт пошкодження тіла. Більш помітно уповільнить тіло при нанесенні сил.
DisableMode disable_mode = 0 🔗
void set_disable_mode(value: DisableMode)
DisableMode get_disable_mode()
Визначає поведінку у фізиці, коли Node.process_mode встановлено на Node.PROCESS_MODE_DISABLED.
float drag_coefficient = 0.0 🔗
Коефіцієнт перетягування тіла. Вищі значення підвищують опір повітря цього тіла.
Примітка: Це значення в даний час невикористане впровадження фізики Godot.
float linear_stiffness = 0.5 🔗
Більшість значень призведе до жорсткого тіла, при цьому менші значення підвищать здатність тіла до вигину. Значення може бути між 0.0 та 1.0 (включаючи).
NodePath parent_collision_ignore = NodePath("") 🔗
NodePath до CollisionObject3D цей SoftBody3D повинен уникнути затискання.
float pressure_coefficient = 0.0 🔗
Коефіцієнт тиску цього м'якого тіла. Симуляційне нарощування тиску зсередини цього тіла. Вищі значення підвищують міцність даного ефекту.
true, SoftBody3D відповідатиме RayCast3D.
float shrinking_factor = 0.0 🔗
Масштабує решту довжин обмежень ребер SoftBody3D. Додатні значення зменшують сітку, а від’ємні – розширюють. Наприклад, значення 0.1 скорочує ребра сітки на 10%, тоді як -0.1 розширює ребра на 10%.
Примітка: shrinking_factor найкраще використовувати на поверхневих сітках із закріпленими точками.
int simulation_precision = 5 🔗
Збільшення цього значення покращить отримане моделювання, але може вплинути на продуктивність. Використовуйте з обережністю.
Маса об'єкта SoftBody3D.
Описи методів
void add_collision_exception_with(body: Node) 🔗
Додати тіло до переліку тіл, які це тіло не може поєднуватися з.
void apply_central_force(force: Vector3) 🔗
Розподіляє та застосовує силу до всіх точок. Сила залежить від часу та призначена для застосування під час кожного оновлення фізики.
void apply_central_impulse(impulse: Vector3) 🔗
Розподіляє та застосовує імпульс до всіх точок.
Імпульс не залежить від часу! Застосування імпульсу кожного кадру призведе до сили, що залежить від частоти кадрів. З цієї причини його слід використовувати лише під час моделювання одноразових ударів (в іншому випадку використовуйте функції "_force").
void apply_force(point_index: int, force: Vector3) 🔗
Прикладає силу до точки. Сила залежить від часу та має застосовуватися під час кожного оновлення фізики.
void apply_impulse(point_index: int, impulse: Vector3) 🔗
Застосовує імпульс до точки.
Імпульс не залежить від часу! Застосування імпульсу кожного кадру призведе до сили, що залежить від частоти кадрів. З цієї причини його слід використовувати лише під час моделювання одноразових ударів (в іншому випадку використовуйте функції "_force").
Array[PhysicsBody3D] get_collision_exceptions() 🔗
Повертає масив вузлів, які були додані як виключення зіткнення для цього тіла.
bool get_collision_layer_value(layer_number: int) const 🔗
Повертаємо, чи не вказаний шар collision_layer, враховуючи layer_number між 1 і 32.
bool get_collision_mask_value(layer_number: int) const 🔗
Повертаємо, чи не вказаний шар collision_layer, враховуючи layer_number між 1 і 32.
Повертаємо внутрішній RID, який використовується PhysicsServer3D для цього тіла.
Vector3 get_point_transform(point_index: int) 🔗
Повертає локальний переклад вершини в масиві поверхні.
bool is_point_pinned(point_index: int) const 🔗
Повертаємо true, якщо вершина встановлена для шпильки.
void remove_collision_exception_with(body: Node) 🔗
Видаліть тіло з переліку тіл, які це тіло не може зв'язатися з.
void set_collision_layer_value(layer_number: int, value: bool) 🔗
На основі value, умикає чи вимикає зазначений шар в collision_layer, для layer_number між 1 і 32.
void set_collision_mask_value(layer_number: int, value: bool) 🔗
На основі value, умикає чи вимикає зазначений шар в collision_mask, для layer_number між 1 і 32.
void set_point_pinned(point_index: int, pinned: bool, attachment_path: NodePath = NodePath(""), insert_at: int = -1) 🔗
Встановлює пінений стан поверхневої вершини. При налаштуванні до true, за бажанням пам'ять вкладення_path може визначити Node3D прикріплену вершину.