Pomocné skripty · Fyzické ovládací prvky
Životnost, chyby a diagnostika
Správné vlastnictví, kontrola chyb a několik diagnostických kroků udržují ovladače bezpečné i při zániku stroje.
| Položka | Význam / výchozí hodnota |
|---|---|
| control.destroy() | Odstraní vlastní pohyblivé body, mechanismus, odpor i Fixed. Parent nezničí. Opakované volání je bezpečné. |
| Zničení parentu / body / hlavního constraintu | Kaskádově zneplatní a odstraní celý control. |
| jolt_stop() | Ukončí managed svět a zneplatní jeho resources. |
| control.is_valid() | Ověří aktuální platnost, ne pouze existenci GML structu. |
| control.data / control.body.data | Dva samostatné gameplay structy; data ovladače se nekopírují automaticky na body. |
Příklad#
control = jolt_control_wheel();
if (is_undefined(control)) {
var error = jolt_get_error();
show_debug_message(error.context + ": " + error.message);
exit;
}
if (!control.set_phase_motor({phase: 0.25})) {
show_debug_message(jolt_get_error().message);
}
// Před pozdějším použitím, pokud mohl zaniknout parent:
if (control.is_valid()) {
var pose = control.get_transform();
}Factory vrací undefined při chybě, settery true/false. Číselné a konfigurační gettery obvykle vracejí undefined při chybě; booleany vracejí false a get_detent() −1. Stejné sentinel hodnoty mohou mít i běžný význam, proto při nečekaném výsledku přečtěte chybu ihned. Další API volání ji může nahradit.
Když výsledek neodpovídá očekávání#
| Položka | Význam / výchozí hodnota |
|---|---|
| Ovladač se nevrací | Zkontrolujte auto_return a dostatečný drive; u Button je default false. |
| Detent nezabírá | Vypněte návrat nebo vyšší prioritu; ověřte jednotky a capture oblast. |
| Motor enabled, ale nehýbe | Čtěte active/mode, zámek a zachycené detenty; pak moment a zatížení. |
| Pohybuje se opačně | Button/Slider mají dráhu −Z, Pull Handle +Z. Inverze output obrací jen číslo. |
| Grafika uhýbá | Použijte moving get_transform(), správný origin meshe a celý quaternion. |
| Chyba kroku u Wheel/Crank | Ověřte timestep a úhlové meze podle kapitoly Úhel, otáčky, fáze a nulování. |
// Create
jolt_debug_enable(true);
// Draw End
jolt_debug_draw(JOLT_DEBUG_SHAPES | JOLT_DEBUG_CONSTRAINTS | JOLT_DEBUG_CENTER_OF_MASS);Nové související postupy#
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 |
|---|---|---|
| JoltControl.destroy | JoltControl.destroy() | is_valid Boolean kontroluje native a může zneplatnit wrapper; destroy Boolean idempotentně odstraní vlastněný mechanismus (těleso a constraint), nikoliv parent. |
| JoltControl.is_valid | JoltControl.is_valid() | is_valid Boolean kontroluje native a může zneplatnit wrapper; destroy Boolean idempotentně odstraní vlastněný mechanismus (těleso a constraint), nikoliv parent. |