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#
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ů#
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ů#
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ík | Signatura | Kontrakt operace |
|---|---|---|
| JoltCharacter.entered_sensor | JoltCharacter.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_sensor | JoltCharacter.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_events | JoltCharacter.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_events | JoltCharacter.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ů. |