VehicleWheel3D

Наследует: Node3D < Node < Object

Физическое 3D-тело для VehicleBody3D, имитирующее поведение колеса.

Описание

Узел, используемый как дочерний элемент родительского элемента VehicleBody3D для моделирования поведения одного из его колес. Этот узел также действует как коллайдер для определения, касается ли колесо поверхности.

Примечание: Этот класс имеет известные проблемы и не предназначен для предоставления реалистичной трехмерной физики транспортного средства. Если вам нужна расширенная физика транспортного средства, вам может потребоваться написать собственную интеграцию физики с использованием другого класса 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()

Демпфирование, применяемое к пружине подвески при сжатии, то есть когда колесо движется вверх относительно автомобиля. Измеряется в ньютон-секундах на миллиметр (Н⋅с/мм) (N⋅s/mm) или мегаграммах в секунду (Мг/с)(Mg/s). Это значение должно быть между 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()

Демпфирование, применяемое к пружине подвески при отскоке или выдвижении, то есть когда колесо движется вниз относительно транспортного средства. Измеряется в ньютон-секундах на миллиметр (N⋅s/mm) или мегаграммах в секунду (Mg/s). Это значение должно быть между 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()

Жесткость подвески, измеряемая в ньютонах на миллиметр (N/mm) или мегаграммах на секунду в квадрате (Mg/s²). Используйте значение ниже 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, если это колесо контактирует с поверхностью.