VehicleWheel3D

Успадковує: Node3D < Node < Object

Корпус фізики 3D для VehicleBody3D, що імітує поведінку колеса.

Опис

Вуз, який використовується як дитина VehicleBody3D, щоб імітувати поведінку одного з його коліс. Цей вузол також виступає в якості комірця, щоб виявити, якщо колесо доторкнеться поверхні.

Примітка: Цей клас відомий питання і не призначений для забезпечення реалістичної фізики автомобілів 3D. Якщо ви хочете розширити фізику транспортних засобів, вам може знадобитися записувати власну фізичну інтеграцію за допомогою іншого класу PhysicsBody3D.

Посібники

Властивості

float

brake

0.0

float

damping_compression

0.83

float

damping_relaxation

0.88

float

engine_force

0.0

PhysicsInterpolationMode

physics_interpolation_mode

2 (overrides Node)

float

steering

0.0

float

suspension_max_force

6000.0

float

suspension_stiffness

5.88

float

suspension_travel

0.2

bool

use_as_steering

false

bool

use_as_traction

false

float

wheel_friction_slip

10.5

float

wheel_radius

0.5

float

wheel_rest_length

0.15

float

wheel_roll_influence

0.1

Методи

Node3D

get_contact_body() const

Vector3

get_contact_normal() const

Vector3

get_contact_point() const

float

get_rpm() const

float

get_skidinfo() const

bool

is_in_contact() const


Описи властивостей

float brake = 0.0 🔗

Повільняє колесо, застосовуючи гальмівну силу. Колесо сповільнюється, якщо він контактує з поверхнею. В залежності від RigidBody3D.mass транспортного засобу. Для автомобіля з масовим набором до 1000, спробуйте значення в діапазоні 25 - 30 для жорстких гальмівних гальмів.


float damping_compression = 0.83 🔗

  • void set_damping_compression(value: float)

  • float get_damping_compression()

Амортизація пружини підвіски під час стиснення, тобто коли колесо рухається вгору відносно автомобіля. Вимірюється в ньютон-секундах на міліметр (Н⋅с/мм) або мегаграмах на секунду (Мг/с). Це значення має бути від 0,0 (без демпфування) до 1,0, але може бути більше. Значення 0,0 означає, що автомобіль продовжуватиме підстрибувати, оскільки пружина зберігає свою енергію. Хорошим значенням для цього є приблизно 0,3 для звичайного автомобіля, 0,5 для гоночного автомобіля.


float damping_relaxation = 0.88 🔗

  • void set_damping_relaxation(value: float)

  • float get_damping_relaxation()

Амортизація пружини підвіски під час відскоку або висування, тобто коли колесо рухається вниз відносно автомобіля. Вимірюється в ньютон-секундах на міліметр (Н⋅с/мм) або мегаграмах на секунду (Мг/с). Це значення має бути від 0,0 (без демпфування) до 1,0, але може бути більше. Це значення завжди має бути трохи вищим за властивість damping_compression. Для значення damping_compression 0,3 спробуйте значення релаксації 0,5.


float engine_force = 0.0 🔗

  • void set_engine_force(value: float)

  • float get_engine_force()

Прискорює колесо, застосовуючи зусилля двигуна. Колесо використовується тільки при контакті з поверхнею. RigidBody3D.mass транспортного засобу впливає на прискорення транспортного засобу. Для автомобіля з великим набором до 1000, спробуйте значення в діапазоні 25 - 50 для прискорення.

Примітка: Симулятор не бере ефекту передач в рахунок, потрібно додати логіку для цього, якщо ви хочете імітувати редуктори.

Негативне значення призведе до розвороту коліс.


float steering = 0.0 🔗

  • void set_steering(value: float)

  • float get_steering()

Рульовий кут для коліс, в радіях. Налаштування цього до ненульового значення призведе до повороту транспортного засобу, коли він рухається.


float suspension_max_force = 6000.0 🔗

  • void set_suspension_max_force(value: float)

  • float get_suspension_max_force()

Максимальна сила пружини може протистояти. Це значення має бути вище чверті RigidBody3D.mass VehicleBody3D або пружина не буде нести вагу транспортного засобу. Хороші результати часто отримують за значенням, що становить близько 3 × до 4 × цього числа.


float suspension_stiffness = 5.88 🔗

  • void set_suspension_stiffness(value: float)

  • float get_suspension_stiffness()

Жорсткість підвіски, виміряна в Ньютонах на міліметр (Н/мм) або мегаграмах на секунду в квадраті (Мг/с²). Використовуйте значення нижче 50 для автомобіля позашляховика, значення від 50 до 100 для гоночного автомобіля та спробуйте приблизно 200 для автомобіля Формули-1.


float suspension_travel = 0.2 🔗

  • void set_suspension_travel(value: float)

  • float get_suspension_travel()

Це відстань підвіски може подорожувати. У міру того, як Godot одиниці еквівалентні метрам, зберігайте цю установку відносно низькою. Спробуйте значення між 0.1 і 0.3 залежно від типу автомобіля.


bool use_as_steering = false 🔗

  • void set_use_as_steering(value: bool)

  • bool is_used_as_steering()

Якщо значення true, це колесо буде повертатися, коли автомобіль керуватиме. Це значення використовується разом із VehicleBody3D.steering та ігнорується, якщо ви використовуєте значення steering для кожного колеса.


bool use_as_traction = false 🔗

  • void set_use_as_traction(value: bool)

  • bool is_used_as_traction()

Якщо значення true, це колесо передає силу двигуна на землю, щоб рухати транспортний засіб вперед. Це значення використовується разом із VehicleBody3D.engine_force та ігнорується, якщо ви використовуєте значення engine_force для кожного колеса.


float wheel_friction_slip = 10.5 🔗

  • void set_friction_slip(value: float)

  • float get_friction_slip()

Це визначає, скільки зчеплення має це колесо. Поєднується з налаштування тертя поверхні, з якою колесо в контакті. 0,0 означає відсутність зчеплення, 1,0 означає нормальне зчеплення. Для створення дрифта на автівці намагайтеся встановлювати зчеплення задніх коліс трохи нижче, ніж на передніх колесах, або використовуйте нижче значення для імітації зношення шин.

Для новачків краще ставити 1,0.


float wheel_radius = 0.5 🔗

  • void set_radius(value: float)

  • float get_radius()

Радіус колеса в метрах.


float wheel_rest_length = 0.15 🔗

  • void set_suspension_rest_length(value: float)

  • float get_suspension_rest_length()

Це відстань в метрах коліс знизиться з точки його походження. Не встановіть це до 0.0 і перемістіть колесо в позицію, замість того, щоб перемістити точку походження вашого колеса (гізмо в Godot) до положення колеса займеться при знизі, потім використовуйте довжину решти, щоб перемістити колесо вниз до положення, вона повинна бути в тому випадку, коли автомобіль знаходиться в іншому місці.


float wheel_roll_influence = 0.1 🔗

  • void set_roll_influence(value: float)

  • float get_roll_influence()

Це значення впливає на рулон вашого автомобіля. Якщо встановити до 1.0 для всіх коліс, ваш автомобіль буде протистояти рулону тіла, тоді як значення 0.0 буде схильне до прокатки.


Описи методів

Node3D get_contact_body() const 🔗

Повертаємо вузол контактування тіла, якщо діє в дерево, як Node3D. На даний момент GridMap не підтримується, тому вузол завжди буде тип PhysicsBody3D.

Повертаємо null, якщо колесо не контактує з поверхнею, або контактний корпус не є PhysicsBody3D.


Vector3 get_contact_normal() const 🔗

Повертає нормаль зіткнення підвіски у світовому просторі, якщо колесо контактує. Якщо колесо ні з чим не контактує, повертає вектор, що вказує прямо вздовж осі підвіски на автомобіль у світовому просторі.


Vector3 get_contact_point() const 🔗

Повертає точку зіткнення підвіски у світовому просторі, якщо колесо контактує. Якщо колесо ні з чим не контактує, повертає максимальну точку променя колеса у світовому просторі, яка визначається wheel_rest_length + wheel_radius.


float get_rpm() const 🔗

Повернення обертальної швидкості колеса в оборотах за хвилину.


float get_skidinfo() const 🔗

Повертає значення між 0.0 і 1,0, що вказує на те, що це колесо пропускається. 0.0 - катання на лижах (колесник втратив зчеплення, наприклад, ількість місцевості), 1.0 означає не пропустити (колесо має повне зчеплення, наприклад, суху асфальтову дорогу).


bool is_in_contact() const 🔗

Повертаємо true, якщо це колесо контактує з поверхнею.