Utilización de los sensores en Asteroides

Utilización de los sensores en Asteroides

A continuación, proponemos una serie de ejercicios y prácticas para manejar la nave de Asteroides utilizando el sensores.

 

Ejercicio paso a paso: Manejo de la nave con el sensor de orientación

 

1. En primer lugar, implementa la interfaz SensorEventListener.

public class VistaJuego extends View implements SensorEventListener {

2. En el constructor registra el sensor e indica que nuestro objeto recogerá la llamada callback:

SensorManager mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

List<Sensor> listSensors = mSensorManager.getSensorList( 
                                                                           Sensor.
TYPE_ORIENTATION);

if (!listSensors.isEmpty()) {

   Sensor orientationSensor = listSensors.get(0);

   mSensorManager.registerListener(this, orientationSensor,

                              SensorManager.SENSOR_DELAY_GAME);

}

3. Añade los siguientes dos métodos que implementan la interfaz SensorEventListener:

@Override

       public void onAccuracyChanged(Sensor sensor, int accuracy){}

 

       private boolean hayValorInicial = false;

       private float valorInicial;

 

       @Override 
       
public void onSensorChanged(SensorEvent event) {

             float valor = event.values[1];

             if (!hayValorInicial){

              valorInicial = valor;

                     hayValorInicial = true;

             }

             giroNave=(int) (valor-valorInicial)/3 ;

       }

 

 

4. Prueba la aplicación. Has de tener cuidado de que el terminal este en una posición cómoda al entrar en la actividad Juego, dado que el movimiento de la nave se obtiene con la diferencia de la posición del terminal con respecto a la posición inicial.

 

Práctica: Manejo de la nave con sensor de aceleración

Modifica el ejemplo anterior para utilizar el sensor de aceleración en lugar del de orientación. Gracias a la fuerza de gravedad que la Tierra ejerce sobre el terminal podremos saber si este está horizontal. En caso de que la nave este horizontal (o casi) no ha de girar, pero cuando el terminal se incline, la nave a de girar proporcionalmente a esta inclinación. Utiliza los programas anteriores para  descubrir que eje (x, y o z) es el que te interesa y el rango de valores que proporciona.

Práctica: Aceleración de la nave con sensores

 

¿Te animarías a controlar la aceleración de la nave con los sensores? Ten cuidado de que no acelere con mucha facilidad, este juego resulta muy difícil cuando la nave está en movimiento. Puede ser una buena idea que permitas también decelerar la nave.

 

Práctica: Configuración de tipo de entrada en preferencias

 

Todos los controles de la nave (teclado, pantalla táctil y sensores) están activados simultáneamente. El teclado y la pantalla táctil no interfieren cuando el usuario no quiere utilizarlos. Sin embargo, la activación de los sensores sí que molestará a los usuarios que no quieran utilizar este método de entrada.

1.    Crea nuevas entradas en la configuración para activar o desactivar cada tipo de entrada (o al menos la de los sensores).

2.     Modifica el código anterior para que se desactiven las entradas que el usuario no haya seleccionado.


{jcomments on}