Forces / Impulses
Aplikujte sílu nebo impuls v autorovaném bodě včetně přirozeného momentu síly.
Ověřeno podle zdrojů projektu 19. září 2026.
Syntax#
jolt_asset_get_force_point(asset, point_ref);
jolt_asset_apply_force(asset, point_ref, body, force);
jolt_asset_apply_impulse(asset, point_ref, body, impulse);
jolt_asset_create_force(asset, point_ref, body);Factory funkce při chybě vracejí undefined; ihned přečtěte jolt_get_error(). Lookup vrací samostatnou validovanou kopii záznamu. Reference je kanonické UUID nebo přesný Key rozlišující velikost písmen. Vlastník musí být živé spravované těleso aktuálního světa.
Světová transformace = aktuální transformace originu Body × lokální transformace z assetu. Těžiště není autorovací počátek. Pozice používají metry a rotace normalizované XYZW quaterniony. Při pohybu tělesa snímky znovu načítejte.
Blender určuje místo a směr; GameMaker časování a velikost. Vektor sleduje lokální +Z po rotaci bodu a aktuální rotaci vlastníka. Apply vyžaduje dynamické těleso a vrací Boolean. Povolena je konečná podepsaná velikost; záporná obrací směr a nula je platná. Nativní těleso vypočítá moment vůči skutečnému těžišti.
Nastavená síla#
// Create: initial strength is zero.
thruster = jolt_asset_create_force(asset, "rear_thruster", body_vehicle);
if (!is_undefined(thruster)) thruster.set_strength(3000);
// Before each intended simulation step:
if (!is_undefined(thruster)) thruster.apply();
// Cleanup when this helper is no longer needed:
// thruster.destroy();| API / pole | Význam a pravidla |
|---|---|
| force.set_strength(value) | Boolean; konečná podepsaná síla, výchozí 0. Neplatný vstup hodnotu nemění. |
| force.get_strength() / force.get_transform() | Aktuální síla / aktuální světová transformace. |
| force.apply() | Boolean; explicitní jednorázová aplikace. Vytvoření ani settery sílu neaplikují. |
| force.is_valid() / force.destroy() | Platnost / odstranění helperu i debug registrace. |
Časování a debug#
Síla se akumuluje pro příští nativní krok a poté se vynuluje. Jedno volání před jolt_update() neudržuje sílu ve všech pevných podkrocích vícekrokového update. Impuls změní rychlost ihned jednou. Nastavené síly nepřidávají správce trvalých sil. Zničení vlastníka a jolt_stop() zneplatní registrované helpery.
jolt_debug_enable(true);
jolt_debug_set(JOLT_DEBUG_FORCES, true);Debug šipka je dlouhá 0,5 m a vyjadřuje směr, nikoli velikost síly. Záporná síla ji obrací; nula ukazuje +Z. Úspěšná nenulová aplikace ji zvýrazní na 120 ms. Zvýraznění neprodlužuje fyzikální účinek.
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ík | Signatura | Kontrakt operace |
|---|---|---|
| AssetForce.apply | AssetForce.apply() | Boolean; aplikuje nyní sílu strength N ve světovém bodu dle aktuálního ownera; nejde o trvale zapnutou sílu. |
| AssetForce.destroy | AssetForce.destroy() | Vrací true, zneplatní helper a odregistruje debug; ownera nezničí. |
| AssetForce.get_strength | AssetForce.get_strength() | Podepsané konečné N, default 0; setter Boolean, getter uložené číslo i bez nového ověření ownera. Záporná hodnota obrátí +Z. |
| AssetForce.get_transform | AssetForce.get_transform() | Aktuální světový {position, rotation} bodu, undefined při chybě. |
| AssetForce.is_valid | AssetForce.is_valid() | Boolean helperu i ownera. |
| AssetForce.set_strength | AssetForce.set_strength(value) | Podepsané konečné N, default 0; setter Boolean, getter uložené číslo i bez nového ověření ownera. Záporná hodnota obrátí +Z. |
| jolt_asset_apply_force | jolt_asset_apply_force(asset,point_ref,body,force) | Boolean; Dynamic owner, podepsaná velikost N / N·s podél místního +Z Force Pointu v jeho aktuální světové pozici. Sílu obnovuj před požadovaným krokem; impuls je okamžitý. |
| jolt_asset_apply_impulse | jolt_asset_apply_impulse(asset,point_ref,body,impulse) | Boolean; Dynamic owner, podepsaná velikost N / N·s podél místního +Z Force Pointu v jeho aktuální světové pozici. Sílu obnovuj před požadovaným krokem; impuls je okamžitý. |
| jolt_asset_create_force | jolt_asset_create_force(asset,point_ref,owner) | Vrací AssetForce/undefined nad živým Dynamic ownerem. Default strength0, nic nepůsobí bez apply; owner se nevlastní. |
| jolt_asset_get_force_point | jolt_asset_get_force_point(asset,force_point_ref) | Asset + přesný key nebo kanonické UUID. Znovu validuje mutable asset a vrací nezávislý datový záznam, nikoliv fyzikální objekt; chyba undefined a managed error. |