Как датчики используются в играх для Android? - PullRequest
0 голосов
/ 06 ноября 2011

Как люди создают игры, которые заставляют объект двигаться, когда мы поворачиваем или поворачиваем наш телефон в разных направлениях (например, ускоряя автомобиль)? Используют ли они показания акселерометра и гироскопа или OpenGL в Android?

Ответы [ 2 ]

4 голосов
/ 06 ноября 2011

Вероятно, они используют акселерометр, потому что он широко доступен на самых разных устройствах.

Возможно, вы захотите взглянуть на этот урок: http://blog.androgames.net/85/android-accelerometer-tutorial/

А вот демонстрация функции акселерометра от Google: http://developer.android.com/resources/samples/AccelerometerPlay/src/com/example/android/accelerometerplay/AccelerometerPlayActivity.html

2 голосов
/ 08 августа 2012

В этом примере показан простой расчет значения 3 направлений
высота тона, ориентация и азимут.

if(SensorManager.getRotationMatrix(R, null, AccelerometerValues_last, MagneticFieldValues_last))
{
SensorManager.remapCoordinateSystem(R, SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, remapR);
SensorManager.getOrientation(remapR, orientationValues);

Matrix.multiplyMV(orientationVector, 0, remapR, 0, sZVector, 0);
pitch = (float) (-Math.atan2(orientationVector[1], orientationVector[2]) * RADIANS_TO_DEGREES);

Matrix.multiplyMV(orientationVector, 0, remapR, 0, sZVector, 0);
orientation = (float) (-Math.atan2(orientationVector[0], orientationVector[1]) * RADIANS_TO_DEGREES);

Matrix.invertM(remapR_inv, 0, remapR, 0);
Matrix.multiplyMV(azimuthVector, 0, remapR_inv, 0, sZVector, 0);
azimuth = (float) (180 + Math.atan2(azimuthVector[0], azimuthVector[1]) * RADIANS_TO_DEGREES);
}     

Полный код в статье Как использовать датчики Android? . FYI.

...