Blender a integrace

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#

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#

GML
// 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 / poleVý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.

GML
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íkSignaturaKontrakt operace
AssetForce.applyAssetForce.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.destroyAssetForce.destroy()Vrací true, zneplatní helper a odregistruje debug; ownera nezničí.
AssetForce.get_strengthAssetForce.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_transformAssetForce.get_transform()Aktuální světový {position, rotation} bodu, undefined při chybě.
AssetForce.is_validAssetForce.is_valid()Boolean helperu i ownera.
AssetForce.set_strengthAssetForce.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_forcejolt_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_impulsejolt_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_forcejolt_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_pointjolt_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.