LIBGDX Acelerometro

De Manuais Informática - IES San Clemente.
Revisión del 20:07 18 oct 2014 de Angelfg (discusión | contribs.)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

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

LIBGDX 3 Avanzado AcelerometroCompas 2.png

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

LIBGDX 3 Avanzado AcelCompas 1.jpg

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 ó 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.


  • Se escollemos a opción 'Required' 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:

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:

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.

public class AcelerometroCompas extends ApplicationAdapter {
	SpriteBatch batch;
	Texture img;
	BitmapFont font;
	
	@Override
	public void create () {
		batch = new SpriteBatch();
		img = new Texture("badlogic.jpg");

		font = new BitmapFont();
	}

	@Override
	public void render () {
		Gdx.gl.glClearColor(1, 0, 0, 1);
		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
		batch.begin();
		font.drawMultiLine(batch, getOrientationString(), 20, Gdx.graphics.getHeight() - 10);
		font.drawMultiLine(batch, getAcelerometerString(), 120, Gdx.graphics.getHeight() - 10);
		batch.end();
		
	}
	private String getOrientationString() {
		StringBuilder builder = new StringBuilder();		
		builder.append("\nazimuth: ");
		builder.append((int)Gdx.input.getAzimuth());
		builder.append("\npitch: ");
		builder.append((int)Gdx.input.getPitch());
		builder.append("\nroll: ");
		builder.append((int)Gdx.input.getRoll());
		return builder.toString();
	}
	private String getAcelerometerString() {
		StringBuilder builder = new StringBuilder();		
		builder.append("\nX: ");
		builder.append((int)Gdx.input.getAccelerometerX());
		builder.append("\nY: ");
		builder.append((int)Gdx.input.getAccelerometerY());
		builder.append("\nZ: ");
		builder.append((int)Gdx.input.getAccelerometerZ());
		return builder.toString();
	}
}


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 -- (2014).