‹›
Pomocné skripty · Fyzické ovládací prvky

Hodnoty a mapování výstupu

Oddělte fyzickou polohu mechanismu od rozsahu hodnot, které potřebuje vaše hra.

PoložkaVýznam / výchozí hodnota
get_value()Button, Lever, Pedal, Slider, Knob, Pull Handle: 0..1. Wheel/Crank: fáze [0,1).
get_value(axis) / get_values()Joystick: axis 0=X, 1=Y; dvojice {x,y} v jednotkovém disku.
get_output_value(axis=undefined)Jedna hodnota po mapování a inverzi; Joystick vyžaduje osu.
get_output_values()Jen Joystick: namapovaná dvojice {x,y}.

Scalar mapping používá u=get_value(); joystick nejprve převede každou složku vztahem u=(value+1)/2. Při inverted:true se u nahradí 1−u a výsledek odpovídá min+(max−min)×u. Min/max mohou být záporné, stejné i obrácené, ale musí být konečné. Implementace ošetřuje i konečné meze, jejichž prostý rozdíl by přetekl.

Příklad#

GML
knob = jolt_control_knob({output: {min: 0, max: 100}});
knob.set_output_range(20, 80);
knob.set_inverted(true);
var mapped = knob.get_output_value();
var mapping = knob.get_output_config();
var inverted = knob.is_inverted();

stick = jolt_control_joystick();
stick.set_output_range(-100, 100, 0);
stick.set_inverted(true, 1);
var xy = stick.get_output_values();

get_output_config() vrací novou kopii {min,max,inverted}, u joysticku {x:{…},y:{…}}. Ve factory lze joysticku zadat společné output:{min,max,inverted}, které je výchozí pro osy bez vlastního structu. Pokud zadáte output.x nebo output.y, jejich chybějící položky mají standardní výchozí −1, 1, false.

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
JoltControl.get_output_configJoltControl.get_output_config()Konečné min/max mohou být obrácené či stejné; inverted striktní Boolean. Joystick osa0/1. Settery Boolean; is_inverted false i při chybě; config kopie min/max/inverted (u joysticku x/y), undefined při chybě.
JoltControl.get_output_valueJoltControl.get_output_value(axis=undefined)Gameplay mapování hodnoty do output min/max s volitelnou inverzí. Joystick vyžaduje osu nebo get_output_values {x, y}; chyby undefined. Nemění fyzikální cíl ani rozsah.
JoltControl.get_output_valuesJoltControl.get_output_values()Gameplay mapování hodnoty do output min/max s volitelnou inverzí. Joystick vyžaduje osu nebo get_output_values {x, y}; chyby undefined. Nemění fyzikální cíl ani rozsah.
JoltControl.get_valueJoltControl.get_value(axis=undefined)Běžný control normalizovaná hodnota 0..1; Wheel/Crank phase; Joystick -1..1 a povinná osa 0(X)/1(Y). get_values pouze joystick → {x, y}; chyby undefined.
JoltControl.get_valuesJoltControl.get_values()Běžný control normalizovaná hodnota 0..1; Wheel/Crank phase; Joystick -1..1 a povinná osa 0(X)/1(Y). get_values pouze joystick → {x, y}; chyby undefined.
JoltControl.is_invertedJoltControl.is_inverted(axis=undefined)Konečné min/max mohou být obrácené či stejné; inverted striktní Boolean. Joystick osa0/1. Settery Boolean; is_inverted false i při chybě; config kopie min/max/inverted (u joysticku x/y), undefined při chybě.
JoltControl.set_invertedJoltControl.set_inverted(enabled,axis=undefined)Konečné min/max mohou být obrácené či stejné; inverted striktní Boolean. Joystick osa0/1. Settery Boolean; is_inverted false i při chybě; config kopie min/max/inverted (u joysticku x/y), undefined při chybě.
JoltControl.set_output_rangeJoltControl.set_output_range(minimum,maximum,axis=undefined)Konečné min/max mohou být obrácené či stejné; inverted striktní Boolean. Joystick osa0/1. Settery Boolean; is_inverted false i při chybě; config kopie min/max/inverted (u joysticku x/y), undefined při chybě.