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

Uchycení, velikost a vykreslování

Nastavte souřadnice ovladače vůči světu nebo tělesu a zobrazte skutečný pohyb bez ruční rekonstrukce úhlu.

PoložkaVýznam / výchozí hodnota
parentVýchozí undefined: uchycení ke světu. Jinak platný JoltBody ve stejném managed světě; Static, Kinematic i Dynamic.
position / rotationBez parentu: světový bod {x:0,y:0,z:0} a quaternion {x:0,y:0,z:0,w:1}.
local_position / local_rotationS parentem: stejné výchozí hodnoty v jeho lokálním prostoru. Nekombinujte se světovými položkami.
mass / sizeKladná hmotnost a rozměry; konkrétní výchozí hodnoty má stránka typu. Změnu geometrie či dráhy řešte znovuvytvořením.
resistance / outputVýchozí odpor 0. Výstup 0..1 bez inverze; joystick −1..1 na každé ose.

Svět je pravotočivý a Z-up. Local mount je relativní k veřejnému originu parentu, nikoli k těžišti. Platný nenulový quaternion se normalizuje. Při vytvoření na pohybujícím se parentu ovladač převezme jeho lokální rychlost v bodě uchycení. Kolize mezi parentem a ovladačem je pro mechanismus potlačená; kontakt s dalšími tělesy zůstává podle jejich vrstev.

Příklad#

GML
var panel = jolt_box_create_static(0, 0, 1, 2, 1, 0.1);
var lever = jolt_control_lever({
    parent: panel,
    local_position: {x: 0.4, y: 0, z: 0.06},
    local_rotation: {x: 0, y: 0, z: 0, w: 1},
    size: {x: 0.08, y: 0.08, z: 0.5}
});

Pohyblivá část a základna#

get_transform() vrací {position:{x,y,z}, rotation:{x,y,z,w}} pohyblivého tělesa ve světě. get_base_transform() vrací ve stejném formátu aktuální montážní rám. Lever a Joystick mají origin pohyblivého tělesa uprostřed tyče, Pedal uprostřed desky. Crank má origin v pivotu, ale těžiště mimo osu. Mesh musí mít odpovídající lokální origin; případný offset modelu složte s transformem.

GML
// End Step: lever_instance je renderovací instance registrovaná u BBMOD rendereru.
var pose = lever.get_transform();
if (!is_undefined(pose)) {
    lever_instance.Matrix = model_matrix_from_transform(pose.position, pose.rotation);
}

Nové související postupy#

Ověřené kontrakty operací#

Následující kontrakty rozlišují jednotky, návratové hodnoty, chyby a životnost podle aktuální implementace. Nevynechávej kontrolu výsledku: false, 0 a undefined mohou mít u různých metod odlišný význam.

Symbol / vlastníkSignaturaKontrakt operace
JoltControl.get_base_transformJoltControl.get_base_transform()Světový transform pohyblivé části / montážního rámce {position m, rotation XYZW}; undefined při chybě. Parent transform se započítává.
JoltControl.get_transformJoltControl.get_transform()Světový transform pohyblivé části / montážního rámce {position m, rotation XYZW}; undefined při chybě. Parent transform se započítává.