Blender a integrace

Senzory

Připojte průchozí boxový senzor k tělesu a čtěte kontaktní události.

Ověřeno podle zdrojů projektu 19. září 2026.

Syntax#

Syntax
jolt_asset_get_sensor(asset, sensor_ref);
jolt_asset_create_sensor(asset, sensor_ref, owner_body, [options]);

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.

Sensor Box má id, key, volitelné name, position, rotation a plné size[3]. Vytvoření vrací běžné JoltBody: kinematic, sensor:true, allow_sleeping:false. Vlastníkem může být statické, kinematické nebo dynamické kolizní těleso, nikoli další senzor. Každé volání vytvoří samostatnou instanci.

API / poleVýznam a pravidla
options.layerPlatný JoltLayer tohoto světa; jinak výchozí vrstva tělesa.
options.dataStruct vlastních dat tělesa s běžnou referenční sémantikou.

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.

Příklad#

GML
// Create: asset contains a Sensor Box with Key "cargo".
cargo_sensor = jolt_asset_create_sensor(asset, "cargo", body_vehicle);
// Step: read after the controller has called jolt_update().
if (!is_undefined(cargo_sensor)) {
    var events = cargo_sensor.get_collisions();
    for (var i = 0; i < array_length(events); ++i) {
        var e = events[i];
        if (e.other_body == body_vehicle) continue;
        if (e.type == JOLT_COLLISION_ENTER) show_debug_message("Enter");
    }
}

Synchronizace a životnost#

jolt_update() synchronizuje senzory před a po každém pevném podkroku; spravované settery pozice a rotace vlastníka také synchronizují okamžitě. Samotné jolt_step() tyto hooky nespouští. Připojenému senzoru ručně neměňte motion, sensor flag, rychlost ani světovou transformaci. sensor.destroy() odstraní jeden senzor; owner.destroy() jeho senzory; jolt_stop() uklidí všechny.

Kontakty zachovávají ENTER/STAY/EXIT a mohou přicházet pro dvojice subshape. Detekce je diskrétní, takže rychlý průlet celou zónou může uniknout. Kontakty vlastníka se automaticky nevylučují. Použijte kolizní vrstvy nebo filtrujte události. deactivate() těleso uspí; set_sensor(false) z něj udělá pevnou kolizi. Ani jedno není přepínač zapnutí senzoru.

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
jolt_asset_create_sensorjolt_asset_create_sensor(asset,sensor_ref,owner,options=undefined)Vrací připojený Kinematic box Sensor JoltBody/undefined; owner musí být živý managed nesenzor. Velikost/transform z assetu, pouze layer/data runtime overrides. Owner destroy odstraní sensor; aktualizace probíhá managed cestou.
jolt_asset_get_sensorjolt_asset_get_sensor(asset,sensor_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.