tutorial learn java android orientation accelerometer libgdx

java - learn - libgdx manual



Permitir tanto las opciones de paisaje como el acelerĂ³metro con libgdx (2)

Desde la wiki del acelerómetro Libgdx (específicamente esta sección ), los datos del acelerómetro siempre están relacionados con la orientación vertical.

Se espera que use el resultado de Gdx.input.getNativeOrientation() o Gdx.input.getRotation () y cambie los resultados según sea necesario.

El wiki y el javadoc son un poco inconsistentes con respecto a las orientaciones "nativas", pero parece que el código hace lo que dice el wiki ("portait" siempre es la orientación predeterminada, incluso en tabletas donde Android se predetermina al paisaje).

He completado el tutorial de SimpleApp para libgdx. Cambié los controles del juego para utilizar el acelerómetro en lugar de la entrada táctil, de la siguiente manera:

  • En MainActivity.java

    cfg.useAccelerometer = true;

  • En DropGame.java

    float acc = Gdx.input.getAccelerometerY(); bucket.x += acc * 120 * Gdx.graphics.getDeltaTime();

Mi pregunta es, ¿cómo permito ambos paisajes? Me gustaría poder girar mi dispositivo 180 grados desde una orientación horizontal hacia la otra, y hacer que el juego gire con ella.

Lo más cerca que he llegado a lo que quiero es configurar android:screenOrientation="sensorLandscape" en el manifiesto, pero mientras gira la pantalla sin permitir el modo vertical, también invierte los controles del acelerómetro .

Soy nuevo en Android y libgdx, por lo que podría haber olvidado algo obvio.

¡Gracias por adelantado!


Aquí está mi solución, basada en la respuesta del PT :

float rot = Gdx.input.getRotation() - 180; float acc = Gdx.input.getAccelerometerY(); bucket.x += acc * BUCKET_SPEED * Gdx.graphics.getDeltaTime() * (rot / Math.abs( rot ) * -1);

Ahora puedo encender mi dispositivo 180 grados y el juego seguirá, y los controles del acelerómetro funcionan de la misma manera en ambos sentidos.