Pomocné skripty · Fyzické ovládací prvky

Joystick (Joystick)

Joystick poskytuje dva směry náklonu s kruhovým omezením a uzamčeným twistem.

GML
jolt_control_joystick(options=undefined)

Před vytvořením zavolejte jolt_start(). Každá factory přijímá jeden volitelný options struct a vrací JoltControl, při chybě undefined. Společné options: parent, position/rotation nebo local_position/local_rotation, mass, resistance a output. Rozměry jsou celé délky v metrech, hmotnost v kg; úhly tohoto API jsou ve stupních. Detaily společného nastavení najdete v kapitole Uchycení, velikost a vykreslování.

PoložkaVýznam / výchozí hodnota
size{radius:0.06, length:0.6}
mass / max_angle1 kg / 25°
auto_return / targettrue / {x:0, y:0}
drive{max_torque:10, frequency:5, damping:1}
detents / output[] / {x:{min:-1,max:1,inverted:false}, y:{min:-1,max:1,inverted:false}}

Tyč vede od pivotu podél +Z, pravý náklon je +X a přední +Y. max_angle musí ležet mezi 0 a 90° bez krajních bodů. get_values() vrací {x,y}, get_value(0) osu X a get_value(1) osu Y. Obě složky jsou −1..1 a délka vektoru nepřekročí 1; diagonála {1,1} proto není platný target ani detent.

Příklad#

GML
stick = jolt_control_joystick({
    max_angle: 20,
    output: {x: {min: -1, max: 1}, y: {min: -1, max: 1, inverted: true}}
});
var input = stick.get_output_values();
var steering = input.x;
var forward = input.y;

set_target(x,y) používá fyzický disk bez ohledu na output. Automatický návrat je zde ve výchozím stavu zapnutý a cílí do středu. Pro joystick s pevnými polohami nastavte auto_return:false a detents:[{x:0,y:0}, …]; zóny detentů se měří jako vzdálenost v tomto disku.

Integrace s aktuálním projektem#

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íkSignaturaKontrakt operace
jolt_control_joystickjolt_control_joystick(options=undefined)Vyžaduje managed svět, options volitelné, vrací vlastněný JoltControl nebo undefined. Bez parent světové position/rotation; s parent místní local_position/local_rotation, nekombinuj. Joystick: radius.06, length.6 m, mass1kg, max_angle25° v (0, 90), auto_return true, target{0, 0}, drive10N·m/5Hz/1; žádné pressed thresholds.