LIBGDX Acelerometro
UNIDADE 3: Acelerómetro / Compás
Introdución
Nota: Este modo de control está relacionado coa xestión de eventos.
- O acelerómetro é un dispositivo hardware que nos indica en metros por segundo a aceleración do dispositivo en calquera dos tres eixes.
Información da wiki: https://github.com/libgdx/libgdx/wiki/Accelerometer
- Imaxe obtida de https://github.com/libgdx/libgdx/wiki/Accelerometer
- Un compás mide a inclinación en grados do dispositivo.
Información: http://www.badlogicgames.com/wordpress/?p=1490
- Imaxe obtida de http://developer.android.com/reference/android/hardware/SensorManager.html#getOrientation
Para saber se dispoñemos do hardware debemos chamar ó método isPeripheralAvailable.
Por exemplo:
- Gdx.input.isPeripheralAvailable(Peripheral.Compass): devolve true / false.
- Gdx.input.isPeripheralAvailable(Peripheral.Accelerometer): devolve true / false.
Permisos: Non é necesario engadir un permiso para facer uso do hardware do dispositivo, pero podemos indicar ao usuario que o xogo vai facer uso deles e incluso, se poñemos o xogo no Market, podemos facer que non poida ser instalado se non se ten dito hardware.
Debemos editar o arquivo AndroidManifiest.xml da versión Android:
- Escribimos en Name o hardware a usar
- <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true"></uses-feature>
- <uses-feature android:name="android.hardware.sensor.compass" android:required="true"></uses-feature>
- Se escollemos a opción 'required=true' indicamos que é necesario dito hardware para que o xogo funcione.
Compás
Para poder utiliza o compás debemos de indicalo na clase AndroidLauncher do proxecto Android:
1 config.useCompass=true;
No caso do compás podemos facer uso dos seguintes métodos que devolven un valor en grados:
- Azimut: Ángulo de rotación arredor do eixe Z: Gdx.input.getAzimuth(). Pode ser utilizado para alinear algo có polo norte magnético.
- Pitch: Ángulo de rotación arredor do eixe X: Gdx.input.getPitch()
- Roll: Ángulo de rotación arredor do eixe Y: Gdx.input.getRoll()
Acelerómetro
Para poder utiliza o compás debemos de indicalo na clase AndroidLauncher do proxecto Android:
1 config.useAccelerometer=true;
No caso do acelerómetro podemos facer uso dos seguintes métodos que devolven un valor de tipo float entre -10 e 10 inclusive.
- Aceleración no eixe X: Gdx.input.getAccelerometerX()
- Aceleración no eixe Y: Gdx.input.getAccelerometerY()
- Aceleración no eixe Z: Gdx.input.getAccelerometerZ()
Exemplo de código
Deberedes de cambiar a clase co que inician as diferentes plataformas pola seguinte:
Código da clase AcelerometroCompas
Obxectivo: Amosar os valores que devolven as funcións que controlan o acelerómetro e o compás.
1 public class AcelerometroCompas extends ApplicationAdapter {
2 SpriteBatch batch;
3 Texture img;
4 BitmapFont font;
5
6 @Override
7 public void create () {
8 batch = new SpriteBatch();
9 img = new Texture("badlogic.jpg");
10
11 font = new BitmapFont();
12 }
13
14 @Override
15 public void render () {
16 Gdx.gl.glClearColor(1, 0, 0, 1);
17 Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
18 batch.begin();
19 font.drawMultiLine(batch, getOrientationString(), 20, Gdx.graphics.getHeight() - 10);
20 font.drawMultiLine(batch, getAcelerometerString(), 120, Gdx.graphics.getHeight() - 10);
21 batch.end();
22
23 }
24 private String getOrientationString() {
25 StringBuilder builder = new StringBuilder();
26 builder.append("\nazimuth: ");
27 builder.append((int)Gdx.input.getAzimuth());
28 builder.append("\npitch: ");
29 builder.append((int)Gdx.input.getPitch());
30 builder.append("\nroll: ");
31 builder.append((int)Gdx.input.getRoll());
32 return builder.toString();
33 }
34 private String getAcelerometerString() {
35 StringBuilder builder = new StringBuilder();
36 builder.append("\nX: ");
37 builder.append((int)Gdx.input.getAccelerometerX());
38 builder.append("\nY: ");
39 builder.append((int)Gdx.input.getAccelerometerY());
40 builder.append("\nZ: ");
41 builder.append((int)Gdx.input.getAccelerometerZ());
42 return builder.toString();
43 }
44 }
TAREFA OPTATIVA A FACER
TAREFA OPTATIVA A FACER: facer que dependendo da inclinación do móbil, modificar a velocidade dos coches para que vaian máis rápido ou máis amodo.
Podedes intentar calquera outro tipo de control que queirades, como mover o alien con acelerómetro ou calquera outra forma.
-- Ángel D. Fernández González -- (2015).