OnSensorChanged
должно быть таким:
if (e.Sensor == mRotationSensor)
{
var rm = new float[9];
SensorManager.GetRotationMatrixFromVector(rm, e.Values.ToArray());
var ov = new float[3];
SensorManager.GetOrientation(rm, ov);
app.pitch = (Urho.MathHelper.RadiansToDegrees(ov[1]) + 360) % 360; // map [-Pi...+Pi] to [0...360]
app.yaw = (Urho.MathHelper.RadiansToDegrees(ov[0]) + 360) % 360;
Log.Error("pitch=",app.pitch+"");
Log.Error("yaw=", app.yaw + "");
// map [-Pi/2...+Pi/2] to [0...360]
app.cameraNode.Rotation = new Urho.Quaternion(app.pitch, app.yaw, 0);
}
И вам нужно добавить их для SensorManager
в методе OnCreate
:
mSensorManager = (SensorManager)GetSystemService(Activity.SensorService);
mRotationSensor = mSensorManager.GetDefaultSensor(SensorType.RotationVector);
mSensorManager.RegisterListener(this, mRotationSensor, SensorDelay.Game);
И добавить переменные:
private SensorManager mSensorManager;
private Sensor mRotationSensor;
Наконец, не забудьте реализовать ISensorEventListener
интерфейс для вас. Упражнение.
Я предоставил демо на github