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)
Argument | Description |
---|---|
inst1 | The first instance to connect with the joint |
inst2 | The second instance to connect with the joint |
anchor_x | The x coordinate where the joint is anchored, within the game world |
anchor_y | The y coordinate where the joint is anchored, within the game world |
axis_x | The x component of the wheel axis vector |
axis_y | The y component of the wheel axis vector |
enableMotor | Whether the motor should be active (true) or not (false) |
max_motor_torque | Sets the maximum motor torque used to achieve the desired motor speed (in Newtons per meter) |
motor_speed | This is the speed at which the motor should rotate |
freq_hz | This is the oscillation frequency for the joint, in hertz |
damping_ratio | This damping ratio for the joint |
col | Whether the two instances can collide (true) or not (false) |
Returns: index of the joint
A wheel joint simply combines a piston and a revolute joint,
like a wheel mounted on the shock absorber of a car. You specify
the anchor point for the joint well as the two physics enabled
instances to joint, and the first instance will act as the "body"
for the joint, while the second will be the "wheel", and be
permitted to move freely around the joint axis. You can also set an
axis vector, which is the imaginary line along which the joint will
act as a "spring" permitting the wheel to bounce up and down along
it as it encounters obstacles (much like the piston joint). The
following image illustrates this:
If you choose to enable a motor, then the second instance will
rotate around the anchor position, and you can set the maximum
motor torque used to achieve the desired motor speed (N/m) as well
as the speed at which the motor should turn. Since the wheel joint
also has an axis along which it may move, you can set the
oscillation frequency (in Hz) as well as the damping ratio for the
joint - you may need to play with these values to fine tune them
and it is recommended that you start off with smaller values and
increment them until you get the effect that you desire.
As with all the joints, if you set the "col" value to true
then the two instances can interact and collide with each other but
only if they have collision events, however if it is set to
false, they will not collide no matter what.
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(x+25, y + 100, 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);
The above code creates and defines two new fixtures. These are then bound to the calling instance and a new instance that is created before having a wheel joint applied to connect them, after which the fixtures are deleted from memory.