Character
Skákání
Zařadí deterministický skok s volitelným coyote time a jump bufferem.
jump() nezmění pozici okamžitě. Zařadí požadavek, který high-level fixed-step pre-pass odešle před nativní aktualizací postavy.
Základní skok#
if (keyboard_check_pressed(vk_space)) {
player.jump();
}
jolt_update();
if (player.just_jumped()) {
audio_play_sound(snd_jump, 0, false);
}Rychlost skoku#
player.set_jump_speed(7);
var jump_speed = player.get_jump_speed();Úspěšný skok přidá jump_speed ve směru aktuálního up vektoru. Hodnota musí být konečná a nezáporná.
Coyote time a jump buffer#
player.set_coyote_time(0.10);
player.set_jump_buffer(0.12);
var coyote_left = player.get_coyote_remaining();
var buffer_left = player.get_jump_buffer_remaining();- Coyote time dovolí skok krátce po opuštění podporovaného povrchu.
- Jump buffer uchová požadavek zadaný krátce před dopadem.
- Oba časy se měří a spotřebovávají v pevných krocích fyziky.
- Nula příslušnou toleranci vypne.
Související přechody#
player.just_landed()
player.just_left_ground()
player.is_grounded()
player.is_in_air()Tyto příznaky umožňují řídit animace a zvuky bez ohledu na počet fixed steps v aktuálním render frame.
Konfigurace versus zbývající čas#
| API | Chování |
|---|---|
| get_coyote_time() / get_jump_buffer() | Nastavená délka tolerance/bufferu v sekundách. |
| get_coyote_remaining() / get_jump_buffer_remaining() | Aktuální zbývající čas, nikoliv nastavené maximum. |
show_debug_message(player.get_coyote_time());
show_debug_message(player.get_coyote_remaining());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.get_coyote_remaining | JoltCharacter.get_coyote_remaining() | Uložený limit nebo zbývající čas v sekundách podle názvu; getter neověřuje živost. Timery zpracovává fixed step, při Grip/attachment se čekající skok ruší. |
| JoltCharacter.get_coyote_time | JoltCharacter.get_coyote_time() | Uložený limit nebo zbývající čas v sekundách podle názvu; getter neověřuje živost. Timery zpracovává fixed step, při Grip/attachment se čekající skok ruší. |
| JoltCharacter.get_jump_buffer | JoltCharacter.get_jump_buffer() | Uložený limit nebo zbývající čas v sekundách podle názvu; getter neověřuje živost. Timery zpracovává fixed step, při Grip/attachment se čekající skok ruší. |
| JoltCharacter.get_jump_buffer_remaining | JoltCharacter.get_jump_buffer_remaining() | Uložený limit nebo zbývající čas v sekundách podle názvu; getter neověřuje živost. Timery zpracovává fixed step, při Grip/attachment se čekající skok ruší. |
| JoltCharacter.get_jump_speed | JoltCharacter.get_jump_speed() | Rychlost skoku: aktuální číslo v m/s. Selhání: undefined; neplatný objekt není nulové měření. |
| JoltCharacter.jump | JoltCharacter.jump() | Boolean přijetí požadavku, ne potvrzení provedeného skoku. Zpracuje se před fyzikálním krokem; buffer má nejméně jeden fixed timestep. Grip/attachment skok odmítají. Pro provedení sleduj just_jumped. |
| JoltCharacter.just_jumped | JoltCharacter.just_jumped() | 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_coyote_time | JoltCharacter.set_coyote_time(seconds) | Sekundy ≥0, výchozí 0; Boolean. Krátí již běžící timer na nové maximum. Wrapper kontroluje jen zápornost, proto sám posílej konečné číslo; nelze spoléhat na odmítnutí NaN/Infinity. |
| JoltCharacter.set_jump_buffer | JoltCharacter.set_jump_buffer(seconds) | Sekundy ≥0, výchozí 0; Boolean. Krátí již běžící timer na nové maximum. Wrapper kontroluje jen zápornost, proto sám posílej konečné číslo; nelze spoléhat na odmítnutí NaN/Infinity. |
| JoltCharacter.set_jump_speed | JoltCharacter.set_jump_speed(value) | Rychlost skoku: konečné číslo ≥0 m/s; výchozí 7. Vrací true při přijetí, false při neplatném vstupu nebo neplatném objektu. Mění živý objekt. |