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
。
© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7
.
Built with Sphinx using a theme provided by Read the Docs.