Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
VehicleWheel3D¶
用于 VehicleBody3D 的 3D 物理体,能够模拟车轮的行为。
描述¶
作为 VehicleBody3D 子节点使用的节点,能够模拟车辆其中一个车轮的行为。这个节点还充当了碰撞器,能够检测车轮是否与某个表面接触。
注意:该类存在已知问题,并非旨在提供逼真的 3D 车辆物理效果。如果想要高级车辆物理,可能必须使用其他 PhysicsBody3D 类来编写自己的物理整合函数。
教程¶
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
get_contact_body ( ) const |
|
get_rpm ( ) const |
|
get_skidinfo ( ) const |
|
is_in_contact ( ) const |
属性说明¶
float brake = 0.0
通过施加制动力使车轮减速。车轮只有在与表面接触时才会减速。使车辆充分减速所需的力,取决于车辆的 RigidBody3D.mass。对于质量被设置为 1000 的车辆,尝试使用 25 - 30 范围内的值进行紧急制动。
float damping_compression = 0.83
当弹簧被压缩时,应用在弹簧上的阻尼。这个值应该在 0.0(无阻尼)和 1.0 之间。0.0 的值意味着汽车将持续弹跳,因为弹簧将保持其能量。普通汽车 0.3 左右,赛车 0.5 左右比较好。
float damping_relaxation = 0.88
放松时施加在弹簧上的阻尼。这个值应该在 0.0(无阻尼)和 1.0 之间。这个值应该总是比 damping_compression 属性稍高。对于 damping_compression 值 0.3,尝试放松值为 0.5。
float engine_force = 0.0
通过施加引擎力使车轮加速。车轮只有在与表面接触时才会加速。车辆的 RigidBody3D.mass 对车辆的加速度有影响。对于质量被设置为 1000 的车辆,请尝试使用 25 - 50 范围内的加速度值。
注意:模拟没有考虑齿轮的影响,如果想要模拟齿轮,需要为其添加逻辑。
负值将导致车轮倒转。
float steering = 0.0
车轮的转向角,单位:弧度。将该属性设置为非零值将导致车辆在移动时转向。
float suspension_max_force = 6000.0
弹簧所能承受的最大力。该值应高于 VehicleBody3D 的 RigidBody3D.mass 的四分之一,否则该弹簧无法承载车辆的重量。大约 3 到 4 倍这个数字的值通常会获得良好的结果。
float suspension_stiffness = 5.88
这个值定义了悬架的刚度。越野车使用低于 50 的值,赛车使用 50 至 100 的值,像一级方程式赛车则尝试 200 左右的值。
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_radius = 0.5
轮子的半径,单位是米。
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 类型。
如果车轮没有与表面接触,或者接触的实体不是 PhysicsBody3D,则返回 null
。
float get_rpm ( ) const
返回轮子的旋转速度,单位为每分钟转数。
float get_skidinfo ( ) const
返回一个介于 0.0 和 1.0 之间的值,表示这个轮子是否打滑。0.0 表示打滑(车轮失去了抓地力,例如冰雪地形),1.0 表示不打滑(车轮有充分的抓地力,例如干燥的沥青路)。
bool is_in_contact ( ) const
如果轮子与表面接触,返回 true
。