Character

Přikrčení

Přepíná mezi kapslí ve stoje a při přikrčení s automatickým testem volného prostoru.

crouch(true) požádá o kratší kapsli. crouch(false) se v dalším fixed kroku pokusí obnovit stojící kapsli a odmítne narovnání, pokud potřebný prostor blokuje rigidní geometrie.

Změna postoje#

GML
player.crouch(keyboard_check(vk_control));
jolt_update();

if (player.just_crouched()) {
    // Animace přikrčení.
}

if (player.stand_was_just_blocked()) {
    // Zůstat přikrčený pod nízkým stropem.
}

Metody stavu#

MetodaVýznam
is_crouched()Aktuální nativní postoj.
just_crouched()Během update proběhl přechod do přikrčení.
just_stood()Během update proběhl přechod do stoje.
was_stand_blocked()Poslední pokus o narovnání neprošel clearance testem.
stand_was_just_blocked()Narovnání začalo být blokované během tohoto update.

Rozměry#

GML
var radius = player.get_radius();
var standing = player.get_standing_height();
var crouched = player.get_crouch_height();
var current = player.get_current_height();

Oba tvary sdílejí radius a zůstávají ukotvené na stejné pozici chodidel. Výšky jsou celkové včetně zaoblených konců.

Životnost eventů#

Příznaky přechodu a nového zablokování se resetují jednou pro každý jolt_update(). Pro trvalý stav používejte is_crouched() nebo was_stand_blocked().

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.crouchJoltCharacter.crouch(enabled)Boolean úspěchu odeslání požadavku (vstup vyhodnocen jako true/false). Skutečná změna postoje proběhne v solver kroku a může být blokovaná geometrií.
JoltCharacter.get_crouch_heightJoltCharacter.get_crouch_height()Uložený aktuální rozměr v m; výška je celková, nikoliv výška válce. Getter sám neověřuje platnost.
JoltCharacter.get_current_heightJoltCharacter.get_current_height()Aktuální celková výška v m podle is_crouched. Při chybě dotazu na dřep může vrátit standing_height; nejdřív ověř platnost.
JoltCharacter.get_standing_heightJoltCharacter.get_standing_height()Uložený aktuální rozměr v m; výška je celková, nikoliv výška válce. Getter sám neověřuje platnost.
JoltCharacter.is_crouchedJoltCharacter.is_crouched()Boolean posledního nativního stavu; false i při chybě. was_stand_blocked není jednosnímková událost stand_was_just_blocked.
JoltCharacter.just_crouchedJoltCharacter.just_crouched()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.set_heightJoltCharacter.set_height(metres)Konečné rozměry kapsle v m, radius>0, total height>2*radius+minimální válcová část. Boolean; změna je okamžitá, při překážce/attachmentu selže bez změny rozměrů. Výška dřepu sleduje původní poměr, s minimem daným poloměrem.
JoltCharacter.stand_was_just_blockedJoltCharacter.stand_was_just_blocked()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.was_stand_blockedJoltCharacter.was_stand_blocked()Boolean posledního nativního stavu; false i při chybě. was_stand_blocked není jednosnímková událost stand_was_just_blocked.