Цель C: обнаружение изменений в акселерометре - PullRequest
4 голосов
/ 06 июля 2011

Я делаю игру, которая использует ось X акселерометра. Наклоните его налево, маленький парень идет налево, и наоборот.

Прямо сейчас, если я наклонюсь влево, он переместится влево, и значение x станет отрицательным. Когда я начну двигаться вправо (из левой позиции), он все равно будет идти влево, поскольку значение x все еще отрицательно, и он начнет двигаться только после того, как значение вернется к 0, а затем увеличится.

Мой вопрос: как я могу определить, что телефон поворачивается направо, прежде чем он фактически окажется в квадранте (?). Мол, как мне заставить его двигаться вправо, даже если значение все еще отрицательное, но увеличивается к 0?

1 Ответ

3 голосов
/ 06 июля 2011

Вам не нужно значение x, вам нужна дельта x

(после каждого изменения в x сравнивайте его с его предыдущим значением, это ваше направление. Затем сохраните это значение x в качестве новогокомпаратор)

(не objc)

x - текущая позиция X, возвращаемое значение из функций дает вам текущее направление.(Пожалуйста, проверьте мою работу - я считаю, что это правильно, но я не буду использовать ее для наведения ракет)

int directionX (int x) {

  static int currPos = 0;
  int currDirection;

  curDirection = currPos + x;
  currPos = currPos + curDirection;

  return curDirection;

}
...