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#
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#
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#
// Použijte aktivní 3D kameru projektu.
jolt_debug_draw(JOLT_DEBUG_SHAPES | JOLT_DEBUG_CONSTRAINTS);Clean Up event#
if (!is_undefined(button)) button.destroy();
jolt_stop();