Úvod
První fyzikální scéna
Vytvoří podlahu a padající Box pomocí managed high-level API.
Nejmenší použitelná scéna potřebuje jeden controller object. Jeho Create event spustí fyziku a vytvoří bodies, Step event posouvá world a Cleanup event runtime zastaví.
1. Vytvořte controller object#
Do room přidejte jeden object, například obj_physics_controller. Zachovejte právě jednoho aktivního ownera managed worldu.
2. Create event#
if (!jolt_start()) {
var error = jolt_get_error();
show_error(error.message, true);
}
ground = jolt_box_create_static(0, 0, -0.5, 20, 20, 1);
box = jolt_box_create_dynamic(0, 0, 5, 1, 1, 1, {
mass: 1,
friction: 0.4,
restitution: 0.1
});Ground je vystředěný na Z=-0.5 a má celkovou height 1, takže jeho horní plocha leží na Z=0. Dynamic Box začíná nad ním a padá působením default negative-Z gravity.
3. Step event#
var steps = jolt_update();
if (steps < 0) {
show_debug_message(jolt_get_error().message);
}
var transform = box.get_transform();
if (!is_undefined(transform)) {
// Pro rendering použijte transform.position a transform.rotation.
}4. Cleanup event#
jolt_stop();Volitelný debug drawing#
// Create event po jolt_start()
jolt_debug_enable(true);
// Draw event
jolt_debug_draw();Co se stane#
- jolt_start() vytvoří default world s gravity {0,0,-9.81}.
- jolt_box_create_static() vytvoří nehybnou podlahu pomocí celých dimensions.
- jolt_box_create_dynamic() standardně vytvoří Dynamic body.
- jolt_update() provede potřebné fixed simulation steps.
- get_transform() přečte aktuální world-space origin a quaternion.
- jolt_stop() zneplatní bodies a zničí world.
Další kroky#
Po zprovoznění příkladu můžete podle dalších sekcí přidat body-instance binding, collision layers, contact events, raycasts a pokročilejší shapes.