‹›
Pomocné skripty · Fyzické ovládací prvky

První ovládací prvek

Vytvořte vracející se tlačítko a spusťte herní akci jen při přechodu do stisknutého stavu.

Příklad patří do jednoho demonstračního objektu, který vlastní fyzikální svět. Má-li projekt již společný physics controller, ponechte jolt_start(), jolt_update() a jolt_stop() tam a sem přeneste pouze vytvoření, čtení a zničení ovladače. Čtení provádějte po simulaci, například v End Step, pokud controller aktualizuje fyziku ve Step.

Create event#

GML
button = undefined;
was_pressed = false;
if (!jolt_start()) {
    show_debug_message(jolt_get_error().message);
    exit;
}
jolt_debug_enable(true);
button = jolt_control_button({
    position: {x: 0, y: 0, z: 1},
    travel: 0.02,
    auto_return: true,
    target: 0,
    drive: {max_force: 12, frequency: 12, damping: 1}
});
if (is_undefined(button)) {
    show_debug_message(jolt_get_error().message);
}

Step event#

GML
if (!is_undefined(button) && button.is_valid()) {
    // Testovací síla při držení mezerníku; později ji nahradí kontakt nebo grabber.
    if (keyboard_check(vk_space)) button.body.add_force(0, 0, -30);
}
jolt_update();
if (!is_undefined(button) && button.is_valid()) {
    var pressed = button.is_pressed();
    if (pressed && !was_pressed) {
        show_debug_message("Button pressed");
    }
    was_pressed = pressed;
}

Bez argumentu používá jolt_update() delta_time a interní pevný krok. Ovladač nepotřebuje další aktualizační volání. Při držení mezerníku síla překoná návrat; po uvolnění se tlačítko vrátí. Síla v příkladu míří světovým −Z, protože orientace ovladače je zde identita.

Draw End event#

GML
// Použijte aktivní 3D kameru projektu.
jolt_debug_draw(JOLT_DEBUG_SHAPES | JOLT_DEBUG_CONSTRAINTS);

Clean Up event#

GML
if (!is_undefined(button)) button.destroy();
jolt_stop();

Integrace s aktuálním projektem#

Nové související postupy#