Stap 2: Hoe maak je een kras sprite draadloos verplaatsen
Uitzoeken hoe om te vertalen van de beweging in de lucht te beweging op het scherm was echt leuk! Er zijn waarschijnlijk veel verschillende benaderingen van dit, en het was een uitdaging om de keuzes te beperken en te spelen met de gegevens totdat iets begon te klikken.
De PocketLab heeft 3 bewegingssensoren waarvan we dachten dat waren kandidaten: magnetometer, gyroscoop en versnellingsmeter. We gingen via trial and error op elk totdat we geregeld op de versnellingsmeter.
Hier is de theorie van de versnellingsmeter-gegevens vertalen in sprite beweging:
Op de eerste pagina van de notebook, die ik heb getrokken de x- en y as richtingen van de PocketLab. Er is ook een z-as, en dat via de tabel wijst. Kunt u de gegevens op de computer-grafiek. X is rood, y is blauw, en z is groen. Kijken naar x en y richtingen, die parallel aan de tabel, de sensor is op rust en x en y lezen 0 g (zwaartekracht). De z-as gaat door de tabel wijst op en neer, en op de computer leest + 1 g. Waarom is dit? Nou, x en y zijn 0 omdat ze op de rest en loodrecht op z. De z-as wijst in de richting van de zwaartekracht, door middel van de tabel en naar de vloer. Op aarde, de kracht van de zwaartekracht die mensen voelen is ongeveer 9,8 meter per seconde kwadraat, en voor het gemak het heet 1 g, en is altijd een kleine letters g. Zo leest de computer x = 0g, y = 0g en z = 1g, en daarmee kun je vrij zeker ik nam deze foto terwijl op de planeet aarde.
In de tweede pagina van de laptop, ik de PocketLab op zijn voorkant hebt gedraaid, en nu de y-as omhoog en omlaag wijst en + 1 g zal lezen. De x-as is ongewijzigd en 0 g nog leest. De z-as leest nu 0g omdat er loodrecht op de zwaartekracht.
Ik kan dit herhalen in de andere 3 zijden van de sensor, en u kunt zien dat de sensor zal gaan door de volgende:
x = 0g y = 0g wanneer plat op de tafel
x = 1g, y = 0g wanneer aan de linker kant
x = - 1g, y = 0g aan de rechterkant
x = 0g, y = 1g wanneer op de voorzijde
x = 0g, y = - 1g wanneer op de achterzijde
Toen we zagen dat PocketLab genereert gegevens tussen -1 en 1 voor zowel x en y, alles wat we moesten doen was om te vermenigvuldigen de x en y sensor lezingen door de positie op het scherm! Het blijkt te zijn van een eenvoudige en elegante oplossing.
Kras kun je sprites op scherm plaatsen met Cartesiaanse coördinaten. X-positie is tussen-240 en +240 en y-positie is tussen-180 en 180. Als we de x vermenigvuldigen en y-waarden van de versnellingsmeter door dit bereik zal het standpunt van de sprite volgens hoe de sensor wordt gekanteld.
In praktische toepassing, waren er een extra paar details. Als u de kras-codefragment ziet, er is een limiet aan 1.1 geplaatst:
als 1.1 > abs AccelY waarde krijgen dan
als 1.1 > abs AccelX waarde krijgen dan
[het glijden van de sprite naar de nieuwe positie]
anders
[niet]
anders
[niet]
Dit is omdat als u snel de versnellingsmeter, bijvoorbeeld door te schudden, de versnelling zal verder gaan dan 1 g (of -1 g) en de sprite probeert maken te verplaatsen scherm. Dus deze limiet alle waarden die groter zijn dan 1.1 negeert. De functie "abs" is absolute waarde, wat betekent dat als de versnelling hoger dan 1 of lager is dan -1 gaat.
Een ander praktisch detail is in de manier waarop die kras sprites beweegt. De functie Glide vertelt de sprite te glijden naar een bepaalde locatie met een bepaalde snelheid van snelheid. We hadden om te spelen met het tarief, en gevonden.9 seconden om te werken. U kunt dit natuurlijk wijzigen en zien hoe het reageert.
Voel je vrij om te experimenteren met een van de waarden! Het interessant dat de manier waarop de resolutie verandert.
Hoe zit het met z-gegevens? Normaal wanneer u zijn bedrijf PocketLab als een controller en kantelen heen en weer, z gegevens ook verblijf de het bereik van 0 tot 1. We kwamen met het idee van het wegknippen van de sensor, waar z heengaat onder 0, wanneer u wilde schieten van een projectiel.
Als je door de x- en y-code- en cijfer dat uit de beweging, de z-richting zullen gemakkelijk te begrijpen, en de code om te schieten in de bal sprite pagina.