车轮关节简单地将活塞和旋转关节结合在一起,就像安装在汽车减震器上的车轮一样。指定关节的锚点以及要关节的两个启用了物理的实例,第一个实例将作为关节的"实体",而第二个实例将作为"车轮",并允许围绕关节轴自由移动。你也可以设置一个轴向量,这是一条假想的线,关节将沿着这条线充当"弹簧",允许车轮在遇到障碍物时沿着它上下反弹(很像活塞关节)。下图说明了这一点:
如果选择启用马达,则第二个实例将围绕固定位置旋转,您可以设置用于实现所需马达速度 (N/m) 的最大马达扭矩以及马达应该转动的速度。由于车轮关节还有一个可以沿其移动的轴,因此可以设置振荡频率 (以 Hz 为单位) 以及关节的阻尼比-您可能需要使用这些值来微调它们,建议您从较小的值开始并递增它们,直到获得所需的效果。
与所有关节一样,如果将 "col" 值设置为 true,则两个实例可以相互作用并发生碰撞,但是如果它们发生碰撞事件,则只能发生碰撞,但是如果设置为 false,则无论发生什么情况,它们都不会发生碰撞。
physics_joint_wheel_create(inst1, inst2, anchor_x, anchor_y, axis_x, axis_y, enableMotor, max_motor_torque, motor_speed, freq_hz, damping_ratio, col)
参数 | 类型 | 描述 |
---|---|---|
inst1 | Object Instance | 与关节连接的第一个实例 |
inst2 | Object Instance | 与关节连接的第二个实例 |
anchor_x | Real | 游戏世界中关节定位的 X 坐标 |
anchor_y | Real | 游戏世界中关节定位的 Y 坐标 |
axis_x | Real | 车轮轴向量的 X 分量 |
axis_y | Real | 车轮轴向量的 Y 分量 |
enableMotor | Boolean | 马达是否应该启动 (true) 或不启动 (false) |
max_motor_torque | Real | 设置用于实现所需马达转速的最大马达转矩(单位:牛顿/米) |
motor_speed | Real | 这是马达应该旋转的速度 |
freq_hz | Real | 这是关节的振荡频率,单位为赫兹 |
damping_ratio | Real | 关节的阻尼比 |
col | Colour | 这两个实例是否可以碰撞 (true) 或不碰撞 (false) |
var mainFixture = physics_fixture_create();
physics_fixture_set_box_shape(mainFixture, 128, 32);
var wheelFixture = physics_fixture_create();
physics_fixture_set_circle_shape(wheelFixture, 32);
var o_id = instance_create_layer(x+25, y + 100, "Instances", obj_Wheel);
physics_fixture_bind(mainFixture, id);
physics_fixture_bind(wheelFixture, o_id);
physics_joint_wheel_create(id, o_id, o_id.x, o_id.y, 0, 1, true, 10, 1, 15, 6, false);
physics_fixture_delete(mainFixture);
physics_fixture_delete(wheelFixture);
上述代码创建并定义了两个新的装置。然后,这些装置将绑定到调用实例和创建的新实例,然后应用控制盘关节来连接它们,之后,装置将从内存中删除。