Étape 2: Comment faire un sprite zéro déplacer sans fil
Comprendre comment traduire le mouvement en l’air pour le mouvement à l’écran était vraiment amusant ! Il existe probablement de nombreuses approches différentes à cela, et c’était un défi d’affiner les choix et de jouer avec les données jusqu'à ce que quelque chose a commencé à cliquer.
Le PocketLab a 3 détecteurs de mouvement qui nous paraissaient candidats : magnétomètre, gyroscope et accéléromètre. Nous sommes allés par tâtonnement sur chacun jusqu'à ce que nous nous sommes installés sur l’accéléromètre.
Voici la théorie de la traduction des données de l’accéléromètre en mouvement sprite :
Dans la première page du cahier, j’ai dessiné le x et le y directions d’axe de la PocketLab. Il n’y a ainsi un axe de z, et qui pointe à travers la table. Vous pouvez voir les données sur le graphique de l’ordinateur. X est rouge, y est bleu, et z est vert. Si x et y directions qui sont parallèles à la table, le capteur est au repos et x et y lire 0 g (gravité). L’axe z est en passant par la table pointant en haut et en bas et sur l’ordinateur lit + 1 g. Pourquoi est-ce ? Eh bien, x et y sont 0, parce qu’ils sont au repos et perpendiculaire à z. L’axe z est dirigé dans la direction de la gravité, par le biais de la table et vers le sol. Sur terre, la force de gravité qui pensent est d’environ 9,8 mètres par seconde au carré et pour plus de commodité il est nommé 1 g et est toujours un g minuscule. L’ordinateur se lit donc x = g 0, y = g 0 et z = 1g, et avec qui vous pouvez être assez certain que j’ai pris cette photo alors que sur la planète terre.
La deuxième page de l’ordinateur portable, j’ai tourné la PocketLab sur son bord antérieur, en maintenant l’axe y pointe vers le haut et en bas et affiche la mention + 1 g. L’axe x est identique et lira toujours 0 g. L’axe z lit maintenant g 0 parce qu’il est perpendiculaire à la gravité.
Je peux répéter cela dans les 3 autres côtés de la sonde, et vous pouvez voir que la sonde passera par le texte suivant :
x = y 0g = 0g quand plat sur la table
x = g 1, y = 0g quand il est sur le côté gauche
x = - 1g, y = 0g sur le côté droit
x = g 0, y = g 1 quand il est sur la face avant
x = g 0, y = - 1g quand au verso
Quand nous avons vu que PocketLab générera des données entre -1 et 1 pour x et y, tous nous avons eu à faire a été de multiplier le x et y lectures du capteur de la position sur l’écran ! Il s’avère être une solution simple et élégante.
Zéro vous permet de positionner les sprites à l’écran avec les coordonnées cartésiennes. Position X se situe entre -240 et 240 et position y est comprise entre -180 et 180. Si nous multiplions le x et y les valeurs accéléromètre par cette gamme elle place le sprite selon la façon dont le capteur est incliné.
En application pratique, il y avait un supplément peu de détails. Si vous voyez l’extrait de code zéro, il y a une limite imposée à 1.1 :
Si 1,1 > abs obtenir la valeur de AccelY puis
Si 1,1 > abs obtenir la valeur AccelX puis
[glide le sprite vers la nouvelle position]
d’autre
[rien]
d’autre
[rien]
C’est parce que si vous déplacez l’accéléromètre rapidement, par exemple en le secouant, l’accélération va aller au-delà de 1 g (ou -1 g) et faire le sprite essaie de déplacer hors de l’écran. Si cette limite ne tient pas compte de toutes les valeurs supérieures à 1,1. La fonction « abs » est la valeur absolue, ce qui signifie que si l’accélération est supérieur à 1 ou inférieure à -1.
Un autre détail pratique est dans la façon dont Scratch déplace sprites. La fonction de glissement indique le sprite de glisser vers un certain endroit à une certaine vitesse. Nous avons eu à jouer avec le taux et trouvé.9 secondes pour travailler. Vous pouvez changer cela bien sûr et voir comment il réagit.
N’hésitez pas à expérimenter avec les valeurs ! Il est intéressant de noter la façon dont la requête change.
Qu’en est-il des données z ? Normalement, lorsque vous sont maintenant PocketLab en tant que contrôleur et inclinable en arrière, données z aussi reste dans la la plage de 0 à 1. Nous sommes arrivés avec l’idée de retourner le capteur, où z irait au-dessous de 0, quand vous avez voulu tirer un projectile.
Si vous passez par x et y code et figure que dehors de mouvement, la direction z sera facile à comprendre, et le code de tirer est dans la page de sprite de balle.