2011-11-06 3 views
0

우리는 전화기를 다른 방향 (예를 들어 자동차 가속)으로 돌리거나 회전 할 때 대상을 움직이게하는 게임을 어떻게 작성합니까? 그들은 가속도계와 자이로 스코프에서 판독 값을 사용합니까, 아니면 Android에서 OpenGL을 사용합니까?Android 게임에서 센서는 어떻게 사용됩니까?

+0

센서 판독 값을 사용하여 2D, 3D 등 무엇이든 그려지는 것을 제어합니다. –

답변

4

다양한 종류의 장치에서 널리 사용 가능하기 때문에 가속도계를 사용할 가능성이 있습니다.

당신은이 튜토리얼에서 살펴 걸릴 수도 있습니다 : 3 개 방향이
피치 값을 http://developer.android.com/resources/samples/AccelerometerPlay/src/com/example/android/accelerometerplay/AccelerometerPlayActivity.html

+1

고맙습니다. 사용자 1032613 ... 좋은 예입니다 ... 그러나 woooo는 복잡한 계산을 많이합니다. :) .. 논리를 이해하고 이해할 것입니다. – Kozlov

+0

안녕하세요, 나는 sample.Its의 코드를 이해하려고 노력했습니다. 많은 수학이 거기에 관련되어 있으며, 많은 코멘트없이 사용되었습니다. 그 코드를 잘 이해하는 몸이 있습니까? 그리고 @ user1032613 그게 내가 정확히 찾고 있었던거야 :) – Kozlov

2

이 예제는 간단한 계산을 보여줍니다 여기 http://blog.androgames.net/85/android-accelerometer-tutorial/

을 그리고 구글에서 가속도계 기능의 데모입니다 , 방향 및 방위각.

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); 
}  

전체 코드는 How to use Android sensors?입니다. 참고하시기 바랍니다.

관련 문제