Вы хотите управлять объектом на экране с помощью датчика ускорения.
protected override void Initialize() {
...
Accelerometer acc = new Accelerometer();
acc.ReadingChanged += AccReadingChanged;
acc.Start();
...
}
Это метод, который вычисляет положение объекта
void AccReadingChanged(object sender, AccelerometerReadingEventArgs e) {
// Y axes is same in both cases
this.circlePosition.Y = (float)e.Z * GraphicsDevice.Viewport.Height + GraphicsDevice.Viewport.Height / 2.0f;
// X axes needs to be negative when oriented Landscape - Left
if (Window.CurrentOrientation == DisplayOrientation.LandscapeLeft)
this.circlePosition.X = -(float)e.Y * GraphicsDevice.Viewport.Width + GraphicsDevice.Viewport.Width / 2.0f;
else this.circlePosition.X = (float)e.Y * GraphicsDevice.Viewport.Width + GraphicsDevice.Viewport.Width / 2.0f;
}
Я использую оси Z датчика какмой Y в игре и оси Y сенсора как мой X в игре.Калибровка будет выполняться путем вычитания оси Z датчика из центра.Таким образом, наши оси датчиков напрямую соответствуют положению (в процентах) на экране.
Чтобы это работало, нам вообще не нужны оси X датчика ...
Это просто быстрое внедрение.Вы найдете центр для датчика, поскольку это Viewport.Width / 2f
не является центром, суммой и средним значением 3 измерений, калибровкой по осям датчика X, чтобы вы могли играть / использовать приложение в горизонтальном или горизонтальном положении и т. Д.
Этот код протестирован на устройстве Windows Phone! (и работает)