Paths

Uzavřené cesty

Spojí poslední control point s prvním a vytvoří souvislý okruh.

Před build_smooth() zavolejte set_loop(true). Loop potřebuje nejméně tři body a přidá Hermite segment od posledního bodu zpět k prvnímu.

Vytvoření loopu#

GML
var loop = jolt_path();
loop.add_point(-7, 12, 3, 0);
loop.add_point(0, 7, 5, 30);
loop.add_point(7, 12, 3, 90);
loop.add_point(0, 17, 1, 0);
loop.set_loop(true);
loop.build_smooth();

Loop state#

GML
loop.is_loop();
loop.set_loop(false);

Změna loop state zahodí nativní build. Před samplingem nebo vytvořením constraintu znovu zavolejte build_smooth().

Zalamování vzdálenosti#

  • Distance sampling se zalamuje modulo délkou cesty.
  • Záporné vzdálenosti se zalomí zpět kolem loopu.
  • Motor target distances používají stejný převod z délky na fraction.
  • Normalizovaný fraction sampling zůstává v rozsahu 0 až 1.

Souvislé tangenty#

Každá automatická tangenta loopu používá previous a next s cyklickými indexy. Spojení posledního a prvního bodu se proto vyhladí stejným pravidlem jako ostatní body.

Motorizovaný loop#

GML
var rail = jolt_path_world(cart, loop, {
    rotation_mode: JOLT_PATH_ROTATION_FOLLOW,
    motor_max_force: 500,
    motor_velocity: 4
});

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
JoltPath.is_loopJoltPath.is_loop()set_loop Boolean výsledku, změna zahodí build; is_loop Boolean, count číslo/0 při chybě. get_point(index od0) kopie position/roll/tangent/explicit_tangent nebo undefined.
JoltPath.set_loopJoltPath.set_loop(loop)set_loop Boolean výsledku, změna zahodí build; is_loop Boolean, count číslo/0 při chybě. get_point(index od0) kopie position/roll/tangent/explicit_tangent nebo undefined.