Paso 2: Cómo hacer un sprite cero sin cables
Pensando en cómo traducir el movimiento en el aire en movimiento en la pantalla fue realmente divertido! Hay probablemente muchos enfoques diferentes a este, y fue un desafío para reducir las opciones y jugar con los datos hasta que algo empezó a hacer clic.
El PocketLab tiene 3 sensores de movimiento que creíamos eran candidatos: magnetómetro, giroscopio y acelerómetro. Pasamos por prueba y error en cada uno hasta que nos decidimos por el acelerómetro.
Aquí es la teoría de la traducción de datos de acelerómetro en movimiento sprite:
En la primera página del cuaderno, he dibujado el x y y direcciones del eje de la PocketLab. Existe un eje z también, y que apunta a través de la mesa. Puede ver los datos en el gráfico de la computadora. X es rojo, es azul y, y z es verde. Busca en x y y direcciones, que son paralelas a la mesa, el sensor está en reposo y x y y Lee 0 g (gravedad). El eje z pasa por la tabla hacia arriba y hacia abajo y en el ordenador Lee + 1 g. ¿Por qué es esto? Bien, x y y son 0 porque están en reposo y es perpendicular a z. El eje z apunta en la dirección de la gravedad, a través de la mesa y hacia el suelo. En la tierra, la fuerza de gravedad que las personas sienten es unos 9,8 metros por segundo al cuadrado y para mayor comodidad se lleva 1 g y es siempre una g minúscula. Así que la computadora Lee x = g 0, y = 0g y z = 1g, y con eso puede estar bastante seguro de tomó esta foto mientras en el planeta tierra.
En la segunda página de notebook, he girado el PocketLab en su borde delantero, y ahora el eje y apunta hacia arriba y hacia abajo y leerá + 1 g. El eje x se ha modificado y aún Lee 0 g. Ahora el eje z Lee 0g porque es perpendicular a la gravedad.
Puedo repetir esto en los otros 3 lados del sensor, y se puede ver que el sensor irá a través de los siguientes:
x = 0g y = 0g cuando en la mesa
x = g 1, y = 0g cuando en el lado izquierdo
x = - 1g, y = 0g en el lado derecho
x = g 0, y = 1g cuando la parte delantera
x = g 0, y = - 1g cuando en la parte posterior
Cuando vimos que PocketLab generará datos entre -1 y 1 para x e y, todo lo que tuvimos que hacer era multiplicar la x e y lecturas del sensor de la posición en la pantalla! Resulta ser una solución simple y elegante.
Scratch permite posicionar sprites en pantalla con las coordenadas cartesianas. Posición de X entre -240 y +240 y y la posición es entre -180 y 180. Si multiplicamos el x y y los valores de acelerómetro por esta gama posicionarlo el sprite según cómo se activa el sensor.
En la aplicación práctica, había un extra pocos detalles. Si usted ve el fragmento de código cero, hay un límite en 1.1:
Si 1.1 > abs Obtén AccelY valor entonces
Si 1.1 > abs Obtén AccelX valor entonces
[sprite hacia la nueva posición se deslizan]
otra cosa
[no]
otra cosa
[no]
Esto es porque si te mueves rápidamente el acelerómetro, por ejemplo, al agitarlo, la aceleración excede de 1 g (o g-1) y hacer el sprite trate de mover la pantalla. Por lo que este límite hace caso omiso de todos los valores mayores que 1.1. La función "abs" es valor absoluto, lo que significa si la aceleración va más alto que 1 o menor que -1.
Otro detalle práctico es en la forma que cero mueve sprites. La función de deslizamiento dice el sprite se deslice hacia un lugar determinado a una cierta velocidad. Tuvimos que jugar con la velocidad y encontrado.9 segundos para trabajar. Que este cambio de rumbo y ver cómo responde.
No dude en experimentar con cualquiera de los valores! Es interesante la manera en que cambia el movimiento.
¿Qué datos de z? Normalmente cuando están sosteniendo PocketLab como controlador e inclinación hacia adelante y hacia atrás, datos de z también permanece en el el rango de 0 a 1. Surgió con la idea de que el sensor de los bancos, donde iría z por debajo de 0, cuando quería disparar un proyectil.
Si vas a través de la figura que movimiento hacia fuera, x y y código, la dirección z será fácil de entender, y el código para disparar está en la página de sprite de bola.