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#
| Konstanta | Hodnota | Význam |
|---|---|---|
| JOLT_CHARACTER_GROUND_ON_GROUND | 0 | Postava je podporována schůdným povrchem. |
| JOLT_CHARACTER_GROUND_ON_STEEP | 1 | Dotýká se povrchu strmějšího než max_slope. |
| JOLT_CHARACTER_GROUND_NOT_SUPPORTED | 2 | Kontakt existuje, ale postavu právě nepodporuje. |
| JOLT_CHARACTER_GROUND_IN_AIR | 3 | Bez podporujícího kontaktu. |
Kontroly stavu#
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#
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();| Metoda | Vý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#
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ík | Signatura | Kontrakt operace |
|---|---|---|
| JoltCharacter.get_ground_body | JoltCharacter.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_entity | JoltCharacter.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_normal | JoltCharacter.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_position | JoltCharacter.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_state | JoltCharacter.get_ground_state() | Enum JOLT_CHARACTER_GROUND_*, undefined při chybě; poslední stav solveru. |
| JoltCharacter.get_ground_velocity | JoltCharacter.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_grounded | JoltCharacter.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_air | JoltCharacter.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_ground | JoltCharacter.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_landed | JoltCharacter.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_ground | JoltCharacter.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). |