‹›
Vehicles

První vozidlo

Vytvoří, ovládá a zpřístupní stav jednoduchého čtyřkolového auta v kompletním managed workflow.

Příklad používá lokální +Y jako směr dopředu, snižuje těžiště a nechává build() vytvořit praktické diferenciály z kol označených jako driven.

Create event#

GML
jolt_start({ gravity_z: -9.81 });

ground = jolt_box_create_static(0, 0, -0.5, 20, 200, 1);
chassis = jolt_box_create_dynamic(0, 0, 1.1, 1.8, 4.0, 0.5, {
    mass: 1200,
    center_of_mass_offset: { x:0, y:0, z:-0.25 }
});

car = jolt_vehicle(chassis, {
    collision: JOLT_VEHICLE_COLLISION_RAY,
    engine: { max_torque: 500 },
    transmission: { automatic: true }
});

car.add_wheel(-0.8,  1.4, -0.2, { radius:0.35, steering:true, driven:true });
car.add_wheel( 0.8,  1.4, -0.2, { radius:0.35, steering:true, driven:true });
car.add_wheel(-0.8, -1.4, -0.2, { radius:0.35, driven:true, handbrake:true });
car.add_wheel( 0.8, -1.4, -0.2, { radius:0.35, driven:true, handbrake:true });

car.add_anti_roll_bar(0, 1, 1000);
car.add_anti_roll_bar(2, 3, 1000);

if (!car.build()) {
    show_error(jolt_get_error_message(), true);
}

Step event#

GML
var throttle = keyboard_check(vk_up) - keyboard_check(vk_down);
var steering = keyboard_check(vk_right) - keyboard_check(vk_left);
var brake = keyboard_check(vk_space);
var handbrake = keyboard_check(ord("X"));

car.set_inputs(throttle, steering, brake, handbrake);
jolt_update();

Cleanup event#

GML
// jolt_stop() bezpečně zničí také managed vozidlo a chassis.
jolt_stop();

Co ověřit#

  • car je struct a car.build() vrátí true.
  • Po usazení chassis hlásí nejméně tři až čtyři kola has_contact.
  • get_forward_speed() je při jízdě vpřed kladné a při automatické zpátečce záporné.
  • Transformace kol se pro rendering čtou po jolt_update().