VehicleBody3D

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

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

Описание

Это физическое тело реализует всю физическую логику, необходимую для моделирования автомобиля. Оно основано на системе Raycast Vehicle, обычно используемой в физических движках. Помимо узла CollisionShape3D для основного корпуса автомобиля, необходимо также добавить узел VehicleWheel3D для каждого колеса. Также следует добавить к этому узлу узел MeshInstance3D для 3D-модели автомобиля, но эта модель, как правило, не должна включать сетки для колёс. Вы можете управлять автомобилем, используя свойства brake, engine_force и steering. Положение или ориентацию этого узла нельзя изменять напрямую.

Примечание: Локальный передний план для этого узла — Vector3.MODEL_FRONT.

Примечание: Точка начала координат VehicleBody3D будет определять центр тяжести вашего автомобиля. Чтобы сделать транспортное средство более приземлённым, исходную точку обычно располагают низко, перемещая CollisionShape3D и MeshInstance3D вверх.

Примечание: Этот класс имеет известные проблемы и не предназначен для реализации реалистичной трёхмерной физики транспортного средства. Если вам нужна продвинутая физика транспортного средства, вам, возможно, придётся написать собственную интеграцию физики с использованием CharacterBody3D или RigidBody3D.

Обучающие материалы

Свойства

float

brake

0.0

float

engine_force

0.0

float

mass

40.0 (overrides RigidBody3D)

float

steering

0.0


Описания свойств

float brake = 0.0 🔗

Замедляет транспортное средство, применяя тормозное усилие. Транспортное средство замедляется только в том случае, если колеса соприкасаются с поверхностью. Сила, которую необходимо применить для адекватного замедления транспортного средства, зависит от RigidBody3D.mass транспортного средства. Для транспортного средства с массой, установленной на 1000, попробуйте значение в диапазоне 25–30 для резкого торможения.


float engine_force = 0.0 🔗

  • void set_engine_force(value: float)

  • float get_engine_force()

Ускоряет транспортное средство, применяя силу двигателя. Транспортное средство ускоряется только в том случае, если колеса, у которых VehicleWheel3D.use_as_traction установлен на true, соприкасаются с поверхностью. RigidBody3D.mass транспортного средства влияет на ускорение транспортного средства. Для транспортного средства с массой, установленной на 1000, попробуйте значение в диапазоне 25–50 для ускорения.

Примечание: Моделирование не учитывает влияние передач, вам нужно будет добавить логику для этого, если вы хотите смоделировать передачи.

Отрицательное значение приведет к тому, что транспортное средство будет двигаться задним ходом.


float steering = 0.0 🔗

  • void set_steering(value: float)

  • float get_steering()

Угол поворота рулевого колеса транспортного средства. Установка этого значения на ненулевое приведет к повороту транспортного средства во время движения. Колеса, у которых VehicleWheel3D.use_as_steering установлен на true, будут автоматически поворачиваться.

Примечание: Это свойство редактируется в инспекторе в градусах. В коде свойство задается в радианах.