Vlastnosti tělesa

Impulzy

Aplikuje okamžitou změnu linear nebo angular momentum Dynamic body.

Impulses používejte pro údery, skoky, exploze, recoil a jednorázové interakce. Na rozdíl od force se impulse aplikuje jednou a nenásobí se délkou simulačního kroku.

High-Level API#

GML
body.add_impulse(x, y, z)
body.add_impulse_at_position(ix, iy, iz, px, py, pz)
body.add_impulse_local(ix, iy, iz, local_x, local_y, local_z)
body.add_angular_impulse(x, y, z)

Souřadnicové prostory#

MetodaProstor impulzuBod aplikace
add_impulseWorld-spaceTěžiště
add_impulse_at_positionWorld-spaceWorld-space bod
add_impulse_localWorld-spaceLokální bod převedený body rotací a originem
add_angular_impulseWorld-space angular impulsePřímá rotace

Local helper transformuje pouze bod; impulse vektor zůstává world-space. Impulse mimo těžiště mění linear i angular velocity. Všechny komponenty musí být konečné.

Impulse vs. force#

VlastnostForceImpulse
AplikaceObvykle každý stepJednou
Závislost na časeIntegruje se přes timestepOkamžitá změna momentum
Typická jednotkaNN·s nebo kg·m/s
Typické použitíThruster, přitažlivost, dragÚder, skok, recoil

Příklad#

GML
// Jednorázové okamžité vystřelení.
body.add_impulse(0, 0, 12);

// Roztočení zásahem mimo střed.
body.add_impulse_local(8, 0, 3, 0, -0.6, -0.4);

// Přímé angular momentum.
body.add_angular_impulse(0, 0, 2.5);

Low-Level / Advanced API#

Low-level at_position používá world-space bod. add_impulse_local implementuje high-level wrapper.

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.add_angular_impulseJoltBody.add_angular_impulse(x, y, z)Boolean; Dynamic těleso, světový moment N·m / úhlový impuls N·m·s. Moment je krokový, impuls jednorázový.
JoltBody.add_impulseJoltBody.add_impulse(x, y, z)Boolean; Dynamic těleso, jednorázový světový impuls XYZ v N·s. at_position světový bod, local pouze bod vůči originu; vektor impulsu zůstává světový.
JoltBody.add_impulse_at_positionJoltBody.add_impulse_at_position(ix, iy, iz, px, py, pz)Boolean; Dynamic těleso, jednorázový světový impuls XYZ v N·s. at_position světový bod, local pouze bod vůči originu; vektor impulsu zůstává světový.