VehicleWheel

Inherits: Spatial < Node < Object

模拟车轮行为的物理对象。

描述

此节点需要作为VehicleBody的子节点使用,并模拟其车轮的行为。其节点也作为碰撞器来检测车轮是否接触到表面。

注意: 这个类有已知的问题,并不是为了提供真实的三维车辆物理而设计的。如果你想要先进的车辆物理,须使用另一个PhysicsBody类来编写你自己的物理集成。

教程

属性

float

brake

0.0

float

damping_compression

0.83

float

damping_relaxation

0.88

float

engine_force

0.0

float

steering

0.0

float

suspension_max_force

6000.0

float

suspension_stiffness

5.88

float

suspension_travel

5.0

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

方法

Spatial

get_contact_body ( ) const

float

get_rpm ( ) const

float

get_skidinfo ( ) const

bool

is_in_contact ( ) const

属性说明

Default

0.0

Setter

set_brake(value)

Getter

get_brake()

通过施加制动力使车轮减速。只有当车轮与表面接触时,它才会减速。你需要施加多大的力来使车辆充分减速,取决于车辆的RigidBody.mass。对于质量设置为1000的车辆,尝试在25-30的范围内进行硬制动。


  • float damping_compression

Default

0.83

Setter

set_damping_compression(value)

Getter

get_damping_compression()

当弹簧被压缩时,应用在弹簧上的阻尼。这个值应该在0.0(无阻尼)和1.0之间。0.0的值意味着汽车将持续弹跳,因为弹簧将保持其能量。一个好的值是,普通汽车0.3左右,赛车0.5左右。


  • float damping_relaxation

Default

0.88

Setter

set_damping_relaxation(value)

Getter

get_damping_relaxation()

放松时施加在弹簧上的阻尼。这个值应该在0.0(无阻尼)和1.0之间。这个值应该总是比 damping_compression 属性稍高。对于 damping_compression 值0.3,尝试放松值为0.5。


Default

0.0

Setter

set_engine_force(value)

Getter

get_engine_force()

通过施加引擎力使车轮加速。车轮只有在与表面接触时才会加速。车辆的RigidBody.mass对车辆的加速度有影响。对于质量设置为1000的车辆,尝试在25-50范围内的加速度值。

注意:模拟不考虑齿轮的影响,如果你想模拟齿轮,将需要为其添加逻辑。

负值将导致车轮倒转。


Default

0.0

Setter

set_steering(value)

Getter

get_steering()

车轮的转向角。将此设置为非零值将导致车辆在移动时转向。


  • float suspension_max_force

Default

6000.0

Setter

set_suspension_max_force(value)

Getter

get_suspension_max_force()

弹簧所能抵抗的最大力。此值应该高于VehicleBodyRigidBody.mass的四分之一,否则弹簧将无法承载车辆的重量。通常由大约3×到4×这个数字的值,以获得良好的效果。


  • float suspension_stiffness

Default

5.88

Setter

set_suspension_stiffness(value)

Getter

get_suspension_stiffness()

这个值定义了悬架的刚度。越野车使用低于50的值,赛车使用50至100的值,像一级方程式赛车则尝试200左右的值。


Default

5.0

Setter

set_suspension_travel(value)

Getter

get_suspension_travel()

这是悬架可以移动的距离。由于Godot 的单位相当于米,所以保持这个设置相对较低。根据汽车的类型,试试0.1和0.3之间的值。


  • bool use_as_steering

Default

false

Setter

set_use_as_steering(value)

Getter

is_used_as_steering()

如果true,当汽车转向时,其轮子将被转动。此值和VehicleBody.steering一起使用,如果使用每个轮子的steering值来代替,则会被忽略。


  • bool use_as_traction

Default

false

Setter

set_use_as_traction(value)

Getter

is_used_as_traction()

如果true,此轮子将引擎力传递给地面,推动车辆前进。此值和VehicleBody.engine_force一起使用,如果使用每个轮子的engine_force值,则忽略该值。


  • float wheel_friction_slip

Default

10.5

Setter

set_friction_slip(value)

Getter

get_friction_slip()

这决定了这个轮子的抓地力有多大。它与车轮所接触的表面的摩擦力设置相结合。0.0意味着没有抓地力,1.0是正常抓地力。对于漂移车的设置,尝试将后轮的抓地力设置得比前轮略低,或者使用较低的数值来模拟轮胎的磨损。

在开始时最好将其设置为1.0。


Default

0.5

Setter

set_radius(value)

Getter

get_radius()

轮子的半径,单位是米。


Default

0.15

Setter

set_suspension_rest_length(value)

Getter

get_suspension_rest_length()

这是轮子从原点下降的距离,以米为单位。不要把这个设置为0.0,然后把车轮移到位置上,而是把车轮的原点(Godot中的Gizmo)移到车轮触底时的位置,然后使用剩余长度将轮子向下移动到汽车静止时它应该所处位置。


  • float wheel_roll_influence

Default

0.1

Setter

set_roll_influence(value)

Getter

get_roll_influence()

这个值会影响车辆的滚动。如果所有车轮都设置为1.0,车辆将容易翻车,而0.0的值将阻止车身侧倾。

方法说明

  • Spatial get_contact_body ( ) const

Returns the contacting body node if valid in the tree, as Spatial. At the moment, GridMap is not supported so the node will be always of type PhysicsBody.

Returns null if the wheel is not in contact with a surface, or the contact body is not a PhysicsBody.


返回轮子的旋转速度,单位为每分钟转数。


  • float get_skidinfo ( ) const

返回一个介于0.0和1.0之间的值,表示这个轮子是否打滑。0.0表示打滑,即车轮失去了抓地力,例如冰雪地形,1.0表示不打滑,即车轮有充分的抓地力,例如干燥的沥青路。


  • bool is_in_contact ( ) const

如果轮子与表面接触,返回 true