VehicleWheel3D
Наследует: Node3D < Node < Object
Физическое 3D-тело для VehicleBody3D, имитирующее поведение колеса.
Описание
Узел, используемый как дочерний элемент родительского элемента VehicleBody3D для моделирования поведения одного из его колес. Этот узел также действует как коллайдер для определения, касается ли колесо поверхности.
Примечание: Этот класс имеет известные проблемы и не предназначен для предоставления реалистичной трехмерной физики транспортного средства. Если вам нужна расширенная физика транспортного средства, вам может потребоваться написать собственную интеграцию физики с использованием другого класса PhysicsBody3D.
Обучающие материалы
Свойства
|
||
|
||
|
||
|
||
physics_interpolation_mode |
|
|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методы
get_contact_body() const |
|
get_contact_normal() const |
|
get_contact_point() const |
|
get_rpm() const |
|
get_skidinfo() const |
|
is_in_contact() const |
Описания свойств
Замедляет колесо, применяя тормозное усилие. Колесо замедляется только если оно соприкасается с поверхностью. Сила, которую вам нужно применить для адекватного замедления вашего автомобиля, зависит от RigidBody3D.mass автомобиля. Для автомобиля с массой, установленной на 1000, попробуйте значение в диапазоне 25–30 для резкого торможения.
float damping_compression = 0.83 🔗
Демпфирование, применяемое к пружине подвески при сжатии, то есть когда колесо движется вверх относительно автомобиля. Измеряется в ньютон-секундах на миллиметр (Н⋅с/мм) (N⋅s/mm) или мегаграммах в секунду (Мг/с)(Mg/s). Это значение должно быть между 0,0 (без демпфирования) и 1,0, но может быть и больше. Значение 0,0 означает, что автомобиль будет продолжать подпрыгивать, поскольку пружина сохраняет свою энергию. Хорошее значение для этого составляет около 0,3 для обычного автомобиля, 0,5 для гоночного автомобиля.
float damping_relaxation = 0.88 🔗
Демпфирование, применяемое к пружине подвески при отскоке или выдвижении, то есть когда колесо движется вниз относительно транспортного средства. Измеряется в ньютон-секундах на миллиметр (N⋅s/mm) или мегаграммах в секунду (Mg/s). Это значение должно быть между 0,0 (без демпфирования) и 1,0, но может быть и больше. Это значение всегда должно быть немного выше свойства damping_compression. Для значения damping_compression 0,3 попробуйте значение релаксации 0,5.
Ускоряет колесо, применяя силу двигателя. Колесо ускоряется только в том случае, если оно соприкасается с поверхностью. RigidBody3D.mass транспортного средства влияет на ускорение транспортного средства. Для транспортного средства с массой, установленной на 1000, попробуйте значение в диапазоне 25–50 для ускорения.
Примечание: Моделирование не учитывает влияние передач, вам нужно будет добавить логику для этого, если вы хотите смоделировать передачи.
Отрицательное значение приведет к реверсированию колеса.
Угол поворота рулевого колеса в радианах. Установка ненулевого значения приведет к повороту транспортного средства во время движения.
float suspension_max_force = 6000.0 🔗
Максимальная сила, которую может выдержать пружина. Это значение должно быть больше четверти RigidBody3D.mass VehicleBody3D, иначе пружина не выдержит вес транспортного средства. Хорошие результаты часто достигаются при значении, которое примерно в 3-4 раза больше этого числа.
float suspension_stiffness = 5.88 🔗
Жесткость подвески, измеряемая в ньютонах на миллиметр (N/mm) или мегаграммах на секунду в квадрате (Mg/s²). Используйте значение ниже 50 для внедорожника, значение от 50 до 100 для гоночного автомобиля и попробуйте что-то около 200 для чего-то вроде болида Формулы-1.
float suspension_travel = 0.2 🔗
Это расстояние, которое может пройти подвеска. Поскольку единицы Godot эквивалентны метрам, установите этот параметр относительно низким. Попробуйте значение от 0,1 до 0,3 в зависимости от типа автомобиля.
bool use_as_steering = false 🔗
Если true, это колесо будет поворачиваться, когда автомобиль поворачивается. Это значение используется вместе с VehicleBody3D.steering и игнорируется, если вместо этого вы используете значение steering для каждого колеса.
bool use_as_traction = false 🔗
Если true, это колесо передает силу двигателя на землю, чтобы двигать транспортное средство вперед. Это значение используется вместе с VehicleBody3D.engine_force и игнорируется, если вместо этого вы используете значение engine_force для каждого колеса.
float wheel_friction_slip = 10.5 🔗
Это определяет, насколько сильное сцепление имеет это колесо. Оно сочетается с настройкой трения поверхности, с которой соприкасается колесо. 0,0 означает отсутствие сцепления, 1,0 — нормальное сцепление. Для настройки дрифт-кара попробуйте установить сцепление задних колес немного ниже, чем передних, или используйте меньшее значение для имитации износа шин.
Лучше всего установить это значение на 1,0 при начале.
Радиус колеса в метрах.
float wheel_rest_length = 0.15 🔗
Это расстояние в метрах, на которое опускается колесо от исходной точки. Не устанавливайте это значение на 0,0 и не перемещайте колесо в положение, вместо этого переместите исходную точку вашего колеса (гизмо в Godot) в положение, которое колесо займет при достижении дна, затем используйте длину покоя, чтобы переместить колесо в положение, в котором оно должно быть, когда автомобиль находится в состоянии покоя.
float wheel_roll_influence = 0.1 🔗
Это значение влияет на крен вашего автомобиля. Если установлено значение 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.
Возвращает скорость вращения колеса в оборотах в минуту.
Возвращает значение от 0,0 до 1,0, которое указывает, буксует ли это колесо. 0,0 — буксует (колесо потеряло сцепление, например, обледеневшая дорога), 1,0 — не буксует (колесо имеет полное сцепление, например, сухая асфальтовая дорога).
Возвращает true, если это колесо контактирует с поверхностью.