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

Úhel, otáčky, fáze a nulování

Čtěte skutečnou víceotáčkovou polohu Wheel/Crank a změňte logickou nulu bez pohybu tělesa.

PoložkaVýznam / výchozí hodnota
get_angle()Souvislý logický úhel ve stupních, kladný i záporný.
get_turns()Celé otáčky se zaokrouhlením k nule; −90° má 0 otáček.
get_phase() / get_value()Fáze [0,1) přes floor modulo; −90° má fázi 0.75.
get_speed()Skutečná relativní rychlost kolem osy v °/s, nikoli rad/s z body API.
set_zero()Nastaví současnou polohu jako logickou nulu, vrací true/false.

Příklad#

GML
var angle = wheel.get_angle();
var turns = wheel.get_turns();
var phase = wheel.get_phase();
var speed = wheel.get_speed();
if (keyboard_check_pressed(ord("Z"))) wheel.set_zero();

Nulování zachová fyzickou polohu, rychlost i uložený speed/torque. Zruší dosavadní zachycení detentů, phase motor znovu vybere cíl a absolutní číselné cíle nadále platí vůči nové nule. Při zapnutém polohovém motoru se tedy může po nulování změnit fyzický bod, do kterého motor směřuje.

Krok simulace a přesnost#

Tracker vyžaduje dt × součet úhlových mezí obou konců < 135° za celý vzorkovaný physics update. U Dynamic bere max angular velocity, u Kinematic předepsanou rychlost. Vyšší počet collision substeps sám tuto podmínku neobejde. Například výchozí dynamická mez kolem 2700°/s znamená, že dt=0.1 s pro volné kolo neprojde, i když motor požaduje nulu. Používejte běžnou smyčku jolt_update() s vhodným pevným krokem.

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_angleJoltControl.get_angle()Pouze Wheel/Crank: úhel více otáček ve ° / počet otáček / fáze 0..1 / rychlost °/s. Číslo nebo undefined při neplatnosti či nevhodném typu.
JoltControl.get_phaseJoltControl.get_phase()Pouze Wheel/Crank: úhel více otáček ve ° / počet otáček / fáze 0..1 / rychlost °/s. Číslo nebo undefined při neplatnosti či nevhodném typu.
JoltControl.get_speedJoltControl.get_speed()Pouze Wheel/Crank: úhel více otáček ve ° / počet otáček / fáze 0..1 / rychlost °/s. Číslo nebo undefined při neplatnosti či nevhodném typu.
JoltControl.get_turnsJoltControl.get_turns()Pouze Wheel/Crank: úhel více otáček ve ° / počet otáček / fáze 0..1 / rychlost °/s. Číslo nebo undefined při neplatnosti či nevhodném typu.
JoltControl.set_zeroJoltControl.set_zero()Pouze Wheel/Crank, Boolean. Nastaví logickou nulu enkodéru; nepřetočí fyzické těleso.