Vlastnosti tělesa

Pozice

Čte nebo mění origin JoltBody ve world space.

Pozice používá veřejný pravotočivý Z-up souřadnicový systém. Popisuje origin body transformu, který se při použití center_of_mass_offset může lišit od těžiště.

High-Level API#

GML
body.get_position()
body.set_position(x, y, z)
body.get_transform()
body.get_center_of_mass_position()
body.get_center_of_mass_offset()

Hodnoty a návratové typy#

MetodaNávratPopis
get_position(){x,y,z} nebo undefinedAktuální world-space body origin.
set_position(x,y,z)BooleanTeleportuje origin na konečnou world-space pozici.
get_transform()Struct nebo undefinedVrátí {position, rotation} ze dvou validovaných čtení.
get_center_of_mass_position(){x,y,z} nebo undefinedAktuální world-space pozice těžiště.
get_center_of_mass_offset(){x,y,z}Lokální offset zadaný při vytvoření a uložený wrapperem.

Chování podle motion typu#

  • Dynamic a Kinematic bodies se po úspěšném set_position() aktivují.
  • Static body lze přemístit, ale neaktivuje se.
  • set_position() je okamžitý teleport a nevypočítává velocity směrem k cíli.
  • Pro pohyb Kinematic body k cíli v čase použijte move_kinematic() nebo move_kinematic_euler(); Dynamic kontakty pak vnímají výslednou rychlost.

Kinematic pohyb k cíli#

GML
body.move_kinematic(x, y, z, qx, qy, qz, qw, seconds)
body.move_kinematic_euler(x, y, z, rx, ry, rz, seconds)

Metody vyžadují Kinematic body, konečné cílové souřadnice, platnou rotaci a konečné seconds > 0. Euler úhly jsou ve stupních. Při úspěchu vracejí true.

Creation option a příklad#

GML
var body = jolt_box_create_dynamic(0, 0, 4, 1, 1, 1, {
    center_of_mass_offset: {x:0.25, y:0, z:-0.1}
});

body.set_position(3, -2, 6);
var origin = body.get_position();
var centre = body.get_center_of_mass_position();

center_of_mass_offset musí být konečný struct {x,y,z} a po vytvoření jej nelze změnit.

Low-Level / Advanced API#

Low-level setter vrací číselné 1/0. Component gettery vracejí Real a při selhání používají native error state.

Settery vracejí true při úspěchu a false při neplatném vstupu, invalidním nebo stale body či nepodporovaném motion typu. Gettery vracejí požadovanou hodnotu nebo undefined při selhání. High-level chybu zjistíte přes jolt_get_error().

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
JoltBody.get_positionJoltBody.get_position()Světový {x, y, z} m / quaternion XYZW / Euler XYZ° / {position, rotation}, dle metody. undefined při chybě. Pozice je origin tělesa, ne COM.
JoltBody.set_positionJoltBody.set_position(x, y, z)Boolean teleportu; světová pozice m, rotace XYZW nebo Euler XYZ°. set_rotation se třemi složkami znamená Euler°, se čtyřmi quaternion. Synchronizuje připojené senzory; pro pohyblivou plošinu použij move_kinematic.