VehicleBody3D

继承: RigidBody3D < PhysicsBody3D < CollisionObject3D < Node3D < Node < Object

模拟汽车行为的 3D 物理体。

描述

该节点实现了模拟汽车所需的所有物理逻辑。它基于物理引擎中常见的射线投射的车辆系统。除了需要为车身添加一个 CollisionShape3D 之外,你还必须为每个车轮添加一个 VehicleWheel3D 节点。你还应该为车辆的 3D 模型的向这个节点添加一个 MeshInstance3D,但该模型通常不应该包含车轮的网格。你可以使用 brakeengine_forcesteering 属性来控制车辆。不应该直接更改该节点的位置和朝向。

注意:VehicleBody3D 的原点将决定车辆的重心。为了让车辆能够更好地贴地,通常会将原点保持在较低的位置,并将 CollisionShape3DMeshInstance3D 向上移动。

注意:该类存在已知问题,并非旨在提供逼真的 3D 车辆物理效果。如果想要高级车辆物理,可能必须使用 CharacterBody3DRigidBody3D 类来编写自己的物理整合函数。

教程

属性

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 的车轮将自动旋转。

注意:该属性在检查器中以度为单位进行编辑。在代码中,该属性以弧度单位设置。