Explosions
Nastavte exploze vůči tělesu nebo světu a explicitně je odpalujte.
Ověřeno podle zdrojů projektu 19. září 2026.
Syntax#
jolt_asset_get_explosion_point(asset, point_ref);
jolt_asset_create_explosion(asset, point_ref, body);
jolt_explosion_create(x, y, z, [owner]);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 Explosion Defaults dodávají radius (výchozí 5 m), directional (false) a plný úhel kuželu (90°). Dopředný směr je lokální +Z. Samotné set_angle() směrovost nezapíná. Runtime strength má výchozí 1000 N·s. Bez vlastníka používá jolt_explosion_create světový bod; s vlastníkem lokální souřadnice tělesa.
Příklad#
// Create once, using an authored Explosion Point.
blast = jolt_asset_create_explosion(asset, "explosion_01", body_vehicle);
if (!is_undefined(blast)) {
blast.set_ignore(body_vehicle);
blast.set_radius(10);
blast.set_strength(1000);
}
// At the explosion event, BEFORE destroying the owner:
if (!is_undefined(blast)) {
var result = blast.explode();
show_debug_message(result.affected_count);
}Metody#
| API / pole | Význam a pravidla |
|---|---|
| blast.set_ignore(body | undefined) | Vyloučení jednoho tělesa nebo zrušení filtru; vlastník se automaticky neignoruje. |
| blast.set_radius(r) / blast.set_strength(s) | Kladný konečný dosah / síla impulsu v runtime mezích. |
| blast.set_position(x,y,z) | Přepíše celý lokální bod, nebo světový bod bez vlastníka. |
| blast.set_rotation(x,y,z,w) / blast.set_rotation_euler(x,y,z) | Jednotkový quaternion / Euler stupně vůči vlastníkovi. |
| blast.set_directional(value) / blast.set_angle(degrees) | Boolean režim / plný úhel v (0,360]. |
| blast.set_direction(x,y,z) | Nenulový směr v soustavě bodu; normalizuje se a zapne směrový režim. |
| blast.set_falloff(value) / blast.set_occlusion(value) | Lineární útlum je výchozí true; blokování překážkami false. |
| blast.set_layers(layer_or_array | undefined) | Filtr cílových vrstev; nemění překážky blokující účinek. |
| blast.get_transform() / blast.is_valid() / blast.destroy() | Světová transformace / platnost / odstranění registrované konfigurace. |
| blast.explode() | {affected_count, bodies, entries}; při chybě prázdný výsledek a diagnostika. |
Settery vracejí Boolean a při odmítnutí zachovají nastavení. Každé explode() přes původní API aplikuje jeden impuls na způsobilá dynamická tělesa, která nejsou senzory. Směrový kužel vybírá cíle; impulsy stále míří radiálně ven. Vytvoření, nastavení ani vykreslení explozi neodpálí. Registrované emitory po použití zničte; uklízí je i zničení vlastníka a jolt_stop().
Debug#
JOLT_DEBUG_EXPLOSIONS kreslí živé náhledy dosahu a kuželu. JOLT_DEBUG_SHAPE_QUERIES uchovává nejvýše tři poslední exploze včetně světového směru, úhlu a dosahu při odpálení. Historie už vlastníka nesleduje. Tento limit nemaže historii běžných overlap dotazů.
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 |
|---|---|---|
| jolt_asset_get_explosion_point | jolt_asset_get_explosion_point(asset,explosion_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. |