‹›
Character

Senzory postavy

Používá kontakty postavy k detekci vstupu do trigger volume a jeho opuštění.

Kontakty se sensory nefungují jako běžná blokující geometrie, ale objeví se v kontaktním streamu postavy s hodnotou sensor nastavenou na true. High-level wrapper z nich vytváří pohodlné vstupní a výstupní eventy.

Příprava sensoru#

GML
var trigger = jolt_box_create_static(0, 8, 1, 4, 4, 2);
trigger.set_sensor(true);
trigger.set_user_data(obj_checkpoint);

Čtení přechodů#

GML
jolt_update();

if (player.entered_sensor()) {
    var entered = player.get_sensor_enter_events();
}

if (player.exited_sensor()) {
    var exited = player.get_sensor_exit_events();
}

Pole obsahují stejné mapované kontaktní structy jako get_contacts(). Vstup vzniká z Added a odchod z Removed; trigger určete podle body, entity, position a normal.

Filtrování sensorů#

GML
var contacts = player.get_contacts();
for (var i = 0; i < array_length(contacts); ++i) {
    var event = contacts[i];
    if (event.sensor) {
        // Zpracování triggeru.
    }
}

Kolizní vrstvy stále platí#

Sensor je pro postavu viditelný pouze tehdy, když se jejich zakódované object layers smějí srazit. Při chybějících eventech nejprve ověřte matici body layers.

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
JoltCharacter.entered_sensorJoltCharacter.entered_sensor()Boolean události managed snímku; čti po jolt_update. Následující začátek managed snímku příznak vyčistí. Není to trvalý stav (např. just_landed není is_grounded).
JoltCharacter.exited_sensorJoltCharacter.exited_sensor()Boolean události managed snímku; čti po jolt_update. Následující začátek managed snímku příznak vyčistí. Není to trvalý stav (např. just_landed není is_grounded).
JoltCharacter.get_sensor_enter_eventsJoltCharacter.get_sensor_enter_events()Pole kontaktových událostí: type, character, body, body_handle, body_valid, entity, sensor, position {x, y, z} m, normal, velocity {x, y, z} m/s. Čti po jolt_update; senzory mají samostatná enter/exit pole. Nejde o trvalý seznam překryvů.
JoltCharacter.get_sensor_exit_eventsJoltCharacter.get_sensor_exit_events()Pole kontaktových událostí: type, character, body, body_handle, body_valid, entity, sensor, position {x, y, z} m, normal, velocity {x, y, z} m/s. Čti po jolt_update; senzory mají samostatná enter/exit pole. Nejde o trvalý seznam překryvů.