Video: how to fix iphone 6s compass + Gyroscope not working 2025
Som standard antager HTML5 spil accelerometeret den neutrale position helt vandret - det vil sige at enheden ligger fladt på et bord. Men disse er mobile enheder, og spillere vil ofte have den neutrale position et andet sted.
Den grundlæggende teknik til kalibrering af vippekontrollen er at holde styr på en forskydningsværdi for AX og AY. Når brugeren vælger at kalibrere, ændres forskydningsværdierne for at lave en ny neutral position. Her er den relevante kode:
Accel. html var spil; var bolden; var accel; var btnCalibrate; var offsetAX = 0; var offsetAY = 0; funktion init () {game = new Scene (); bold = ny Sprite (spil, "redBall. png", 50, 50); accel = ny Accel (); btnCalibrate = ny GameButton ("kalibrere"); btnCalibrate. sæt størrelse (100, 100); btnCalibrate. setPosition (100, 100); spil. start ();} // end init funktionskontrolknap () { hvis (btnCalibrate. isClicked ()) { offsetAY = accel. getAY (); offsetAX = accel. getAX (); } } funktionsopdatering () {spil. klar(); checkButton (); newDX = accel. getAY () - offsetAY; newDY = accel. getAX () - offsetAX; newDX * = -5; newDY * = -5; bold. setDX (newDX); bold. setDY (newDY); bold. opdatering ();}
På en eller anden måde skal du udløse kalibreringen. I dette eksempel tilføjer du en grundlæggende kalibreringsknap. Sådan fungerer det:
-
Tilføj offsetAX og offsetAY variabler.
Disse to variabler angiver, hvor meget enhedens neutrale position er forskellig fra standardindstillingen til flat-on-the-table. Begynd variablerne ved værdi nul.
-
Tilføj en kalibreringsknap.
I dette eksempel kan brugeren kalibrere igen ved at klikke på en knap.
-
Kontroller, at der trykkes på en knap.
Der blev oprettet en funktion for at læse eventuelle knapper.
-
Hvis der trykkes på knappen, skal du få nye offsetværdier.
Når knappen er aktiv, skal du finde de aktuelle AX- og AY-værdier ved at anmode dem om fra Accel-objektet.
-
Træk forskydninger fra økse og ay på hver ramme.
Før andre beregninger trækker du offsetAX fra AX og offsetAY fra AY. Dette vil effektivt indstille den nye neutrale position, men enheden blev indstillet sidste gang knappen blev klikket.
Selv om en kalibreringsknap er meget nem at implementere, foretages kalibrering sommetider automatisk. Hvis du foretrækker, skal du bare bestemme offsetAX og offsetAY under init () -funktionen, og enhedens holdning under init () -funktionen bliver standardindstillingen. Dette tillader ikke brugeren at nulstille kalibreringen, men det forhindrer at rotere skærmen med en sjældent brugt knap.