‹›
Character

Detekce povrchu

Čte stav podpory CharacterVirtual, údaje povrchu a přechody při dopadu.

Controller aktualizuje podporu povrchu při každém nativním kroku. Stav čtěte po jolt_update(), aby odpovídal poslední dokončené simulaci.

Ground states#

KonstantaHodnotaVýznam
JOLT_CHARACTER_GROUND_ON_GROUND0Postava je podporována schůdným povrchem.
JOLT_CHARACTER_GROUND_ON_STEEP1Dotýká se povrchu strmějšího než max_slope.
JOLT_CHARACTER_GROUND_NOT_SUPPORTED2Kontakt existuje, ale postavu právě nepodporuje.
JOLT_CHARACTER_GROUND_IN_AIR3Bez podporujícího kontaktu.

Kontroly stavu#

GML
var state = player.get_ground_state();
if (player.is_grounded()) {
    // Schůdný povrch.
} else if (player.is_on_steep_ground()) {
    // Příliš strmý svah.
} else if (player.is_in_air()) {
    // Ve vzduchu.
}

Informace o povrchu#

GML
var normal = player.get_ground_normal();
var point = player.get_ground_position();
var velocity = player.get_ground_velocity();
var body = player.get_ground_body();
var entity = player.get_ground_entity();
MetodaVýsledek
get_ground_normal()Normála podporujícího povrchu.
get_ground_position()World-space pozice kontaktu.
get_ground_velocity()Velocity povrchu v místě kontaktu.
get_ground_body()Spravovaný JoltBody nebo undefined.
get_ground_entity()user_data tělesa, obvykle napojená instance.

Přechodové eventy#

GML
if (player.just_landed()) {
    effect_create_above(ef_smoke, x, y, 0, c_white);
}

if (player.just_left_ground()) {
    // Spustit animaci pádu.
}

Oba příznaky pokrývají celý jolt_update(), i když provedl více fixed steps.

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.get_ground_bodyJoltCharacter.get_ground_body()Managed JoltBody podpory nebo jeho user_data; undefined pokud není odpovídající živý wrapper či při chybě.
JoltCharacter.get_ground_entityJoltCharacter.get_ground_entity()Managed JoltBody podpory nebo jeho user_data; undefined pokud není odpovídající živý wrapper či při chybě.
JoltCharacter.get_ground_normalJoltCharacter.get_ground_normal()Normála podpory: světové {x, y, z}, jednotkový vektor / unit vector; undefined při chybě. Údaj podpory čti společně s ground_state.
JoltCharacter.get_ground_positionJoltCharacter.get_ground_position()Bod podpory: světové {x, y, z}, m; undefined při chybě. Údaj podpory čti společně s ground_state.
JoltCharacter.get_ground_stateJoltCharacter.get_ground_state()Enum JOLT_CHARACTER_GROUND_*, undefined při chybě; poslední stav solveru.
JoltCharacter.get_ground_velocityJoltCharacter.get_ground_velocity()Rychlost podpory: světové {x, y, z}, m/s; undefined při chybě. Údaj podpory čti společně s ground_state.
JoltCharacter.is_groundedJoltCharacter.is_grounded()Boolean odvozený z ground_state; is_in_air zahrnuje IN_AIR i NOT_SUPPORTED. Chyba čtení vede k false, ne k důkazu stání na zemi.
JoltCharacter.is_in_airJoltCharacter.is_in_air()Boolean odvozený z ground_state; is_in_air zahrnuje IN_AIR i NOT_SUPPORTED. Chyba čtení vede k false, ne k důkazu stání na zemi.
JoltCharacter.is_on_steep_groundJoltCharacter.is_on_steep_ground()Boolean odvozený z ground_state; is_in_air zahrnuje IN_AIR i NOT_SUPPORTED. Chyba čtení vede k false, ne k důkazu stání na zemi.
JoltCharacter.just_landedJoltCharacter.just_landed()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.just_left_groundJoltCharacter.just_left_ground()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).