VehicleWheel
Inherits: Spatial < Node < Object
模拟车轮行为的物理对象。
描述
此节点需要作为VehicleBody的子节点使用,并模拟其车轮的行为。其节点也作为碰撞器来检测车轮是否接触到表面。
注意: 这个类有已知的问题,并不是为了提供真实的三维车辆物理而设计的。如果你想要先进的车辆物理,须使用另一个PhysicsBody类来编写你自己的物理集成。
教程
属性
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
方法
get_contact_body ( ) const | |
get_rpm ( ) const | |
get_skidinfo ( ) const | |
is_in_contact ( ) const |
属性说明
- float brake
Default |
|
Setter | set_brake(value) |
Getter | get_brake() |
通过施加制动力使车轮减速。只有当车轮与表面接触时,它才会减速。你需要施加多大的力来使车辆充分减速,取决于车辆的RigidBody.mass。对于质量设置为1000的车辆,尝试在25-30的范围内进行硬制动。
- float damping_compression
Default |
|
Setter | set_damping_compression(value) |
Getter | get_damping_compression() |
当弹簧被压缩时,应用在弹簧上的阻尼。这个值应该在0.0(无阻尼)和1.0之间。0.0的值意味着汽车将持续弹跳,因为弹簧将保持其能量。一个好的值是,普通汽车0.3左右,赛车0.5左右。
- float damping_relaxation
Default |
|
Setter | set_damping_relaxation(value) |
Getter | get_damping_relaxation() |
放松时施加在弹簧上的阻尼。这个值应该在0.0(无阻尼)和1.0之间。这个值应该总是比 damping_compression 属性稍高。对于 damping_compression 值0.3,尝试放松值为0.5。
- float engine_force
Default |
|
Setter | set_engine_force(value) |
Getter | get_engine_force() |
通过施加引擎力使车轮加速。车轮只有在与表面接触时才会加速。车辆的RigidBody.mass对车辆的加速度有影响。对于质量设置为1000的车辆,尝试在25-50范围内的加速度值。
注意:模拟不考虑齿轮的影响,如果你想模拟齿轮,将需要为其添加逻辑。
负值将导致车轮倒转。
- float steering
Default |
|
Setter | set_steering(value) |
Getter | get_steering() |
车轮的转向角。将此设置为非零值将导致车辆在移动时转向。
- float suspension_max_force
Default |
|
Setter | set_suspension_max_force(value) |
Getter | get_suspension_max_force() |
弹簧所能抵抗的最大力。此值应该高于VehicleBody的RigidBody.mass的四分之一,否则弹簧将无法承载车辆的重量。通常由大约3×到4×这个数字的值,以获得良好的效果。
- float suspension_stiffness
Default |
|
Setter | set_suspension_stiffness(value) |
Getter | get_suspension_stiffness() |
这个值定义了悬架的刚度。越野车使用低于50的值,赛车使用50至100的值,像一级方程式赛车则尝试200左右的值。
- float suspension_travel
Default |
|
Setter | set_suspension_travel(value) |
Getter | get_suspension_travel() |
这是悬架可以移动的距离。由于Godot 的单位相当于米,所以保持这个设置相对较低。根据汽车的类型,试试0.1和0.3之间的值。
- bool use_as_steering
Default |
|
Setter | set_use_as_steering(value) |
Getter | is_used_as_steering() |
如果true
,当汽车转向时,其轮子将被转动。此值和VehicleBody.steering一起使用,如果使用每个轮子的steering值来代替,则会被忽略。
- bool use_as_traction
Default |
|
Setter | set_use_as_traction(value) |
Getter | is_used_as_traction() |
如果true
,此轮子将引擎力传递给地面,推动车辆前进。此值和VehicleBody.engine_force一起使用,如果使用每个轮子的engine_force值,则忽略该值。
- float wheel_friction_slip
Default |
|
Setter | set_friction_slip(value) |
Getter | get_friction_slip() |
这决定了这个轮子的抓地力有多大。它与车轮所接触的表面的摩擦力设置相结合。0.0意味着没有抓地力,1.0是正常抓地力。对于漂移车的设置,尝试将后轮的抓地力设置得比前轮略低,或者使用较低的数值来模拟轮胎的磨损。
在开始时最好将其设置为1.0。
- float wheel_radius
Default |
|
Setter | set_radius(value) |
Getter | get_radius() |
轮子的半径,单位是米。
- float wheel_rest_length
Default |
|
Setter | set_suspension_rest_length(value) |
Getter | get_suspension_rest_length() |
这是轮子从原点下降的距离,以米为单位。不要把这个设置为0.0,然后把车轮移到位置上,而是把车轮的原点(Godot中的Gizmo)移到车轮触底时的位置,然后使用剩余长度将轮子向下移动到汽车静止时它应该所处位置。
- float wheel_roll_influence
Default |
|
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_rpm ( ) const
返回轮子的旋转速度,单位为每分钟转数。
- float get_skidinfo ( ) const
返回一个介于0.0和1.0之间的值,表示这个轮子是否打滑。0.0表示打滑,即车轮失去了抓地力,例如冰雪地形,1.0表示不打滑,即车轮有充分的抓地力,例如干燥的沥青路。
- bool is_in_contact ( ) const
如果轮子与表面接触,返回 true
。