‹›
Character

Pohyb postavy

Řídí normalizovaný pohyb v rovině, přímou rychlost a synchronizaci s GameMakerem.

set_move(x, y) ukládá trvalý vstup pro pohyb. V každém pevném kroku fyziky nativní controller omezí jeho délku na 1, vynásobí jej speed, případně otočí referenčním rámcem a zruší pohyb proti příliš strmým svahům.

Pohyb v rovině#

GML
// Step event: vstup může být od -1 do 1.
var move_x = keyboard_check(ord("D")) - keyboard_check(ord("A"));
var move_y = keyboard_check(ord("W")) - keyboard_check(ord("S"));
player.set_move(move_x, move_y);

jolt_update();
player.sync();

Rychlost pohybu#

GML
player.set_speed(6.5);
var speed = player.get_speed();

Speed musí být konečné nezáporné číslo a udává požadovanou rychlost v jednotkách worldu za sekundu.

Přímá velocity#

GML
player.set_velocity(push_x, push_y, push_z);
var velocity = player.get_velocity();

Přímá velocity používá veřejné world-space souřadnice. Další krok znovu sestaví horizontální pohyb ze set_move(), ale zachová vertikální pohyb vzhledem k aktuálnímu up vektoru.

Hodnoty pohybu#

MetodaVýznam
get_world_move_velocity()Požadovaný pohyb po rotaci rámcem, normalizaci, aplikaci speed a omezení strmým svahem.
get_velocity()Aktuální nativní lineární velocity včetně vertikálního pohybu a impulzů.
get_reference_frame_velocity()Lineární velocity referenčního tělesa.
get_reference_frame_angular_velocity()Úhlová velocity referenčního tělesa.

Teleportace#

GML
player.set_position(target_x, target_y, target_z);
var feet = player.get_position();

set_position() okamžitě přesune základnu controlleru a neprovádí swept test. Používejte jej pro spawn nebo záměrnou teleportaci, ne běžný pohyb.

Hmotnost, gravitace a tlačení za běhu#

APIChování
player.set_mass(value) / get_mass()Konečná hmotnost > 0; ovlivňuje interakci CharacterVirtual s rigidními tělesy, nepřevádí jej na JoltBody.
player.set_gravity(value) / get_gravity()Konečná nezáporná velikost gravitace v jednotkách/s². Výchozí směr je světové -Z; gravitace referenčního rámce používá -up.
player.set_max_strength(value) / get_max_strength()Konečná nezáporná maximální síla pro tlačení rigidních těles.
player.set_max_strength(value) / get_max_push_force()Aliasy set_max_strength/get_max_strength; nejde o tlačení mezi dvěma Charactery.
GML
// player is a validated JoltCharacter; submit changes before jolt_update().
if (!player.set_mass(80)) show_debug_message(jolt_get_error_message());
if (!player.set_gravity(9.81)) show_debug_message(jolt_get_error_message());
if (!player.set_max_strength(500)) show_debug_message(jolt_get_error_message());

Ground Friction a Air Movement#

Původní pohyb platí při vypnutých opt-in režimech. Ground Friction a Air Movement upravují trakci a vlastní horizontální rychlost. Externí impulz exploze má oddělený stav; není automaticky smazán dalším set_move. Veřejný Character nemá add_impulse — použij podporovaný systém, například jolt_explosion s include_characters.

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_gravityJoltCharacter.get_gravity()Velikost gravitace: aktuální číslo v m/s². Selhání: undefined; neplatný objekt není nulové měření.
JoltCharacter.get_massJoltCharacter.get_mass()Hmotnost: aktuální číslo v kg. Selhání: undefined; neplatný objekt není nulové měření.
JoltCharacter.get_max_strengthJoltCharacter.get_max_strength()Maximální tlačná síla: aktuální číslo v N. Selhání: undefined; neplatný objekt není nulové měření.
JoltCharacter.get_speedJoltCharacter.get_speed()Rychlost chůze: aktuální číslo v m/s. Selhání: undefined; neplatný objekt není nulové měření.
JoltCharacter.get_velocityJoltCharacter.get_velocity()Aktuální světová rychlost {x, y, z} v m/s, undefined při chybě.
JoltCharacter.set_gravityJoltCharacter.set_gravity(value)Velikost gravitace: konečné číslo ≥0 m/s²; výchozí 9.81. Vrací true při přijetí, false při neplatném vstupu nebo neplatném objektu. Mění živý objekt.
JoltCharacter.set_massJoltCharacter.set_mass(value)Hmotnost: konečné číslo >0 kg; výchozí 80. Vrací true při přijetí, false při neplatném vstupu nebo neplatném objektu. Mění živý objekt.
JoltCharacter.set_max_strengthJoltCharacter.set_max_strength(value)Maximální tlačná síla: konečné číslo ≥0 N; výchozí 100. Vrací true při přijetí, false při neplatném vstupu nebo neplatném objektu. Mění živý objekt.
JoltCharacter.set_moveJoltCharacter.set_move(x, y)Konečné dvě vstupní osy x/y, běžně -1..1; Boolean. Jde o požadavek pohybu pro další kroky, nikoliv teleport či impulz. Referenční rámec může směr otočit.
JoltCharacter.set_speedJoltCharacter.set_speed(value)Rychlost chůze: konečné číslo ≥0 m/s; výchozí 5. Vrací true při přijetí, false při neplatném vstupu nebo neplatném objektu. Mění živý objekt.
JoltCharacter.set_velocityJoltCharacter.set_velocity(x, y, z)Konečné světové x/y/z v m/s; Boolean. Přímé přepsání rychlosti vyčistí uložené air/ground momentum a externí impuls, při attachmentu se odmítne.