Как сделать обратно пропорциональный цикл? - PullRequest
1 голос
/ 31 марта 2011

Эй, я пытаюсь написать цикл, который обновляется в методе со скоростью 1/60 кадров в секунду. По сути, я пытаюсь выяснить, как написать цикл, который говорит:

Если x увеличивается. уменьшение y.

Я попытался определить две переменные для x; x1 и x2, x1 - исходное значение и x2 - измененное значение.

int x1,x2,y;
x1 = x2;

if (x2 > x1){ y--;}  

Но это, очевидно, не может работать, потому что каждые 1 / 60fps x1 == x2 и, следовательно, аргумент недействителен.
Будем очень благодарны любой помощи.

Спасибо
Oliver

РЕДАКТИРОВАТЬ:

Итак, у меня есть расстояние до объекта, которое составляет x;
У меня также есть масштаб слоя, который составляет y;

По мере увеличения расстояния я бы хотел, чтобы масштаб слоя уменьшался.
По мере уменьшения расстояния я бы хотел, чтобы масштаб слоя увеличивался.

Практическое применение этого заключается в том, что расстояние между двумя объектами увеличивается, поэтому масштаб слоя уменьшается, уменьшая масштаб, сохраняя оба объекта внутри камеры слоев.

Я просто не знаю, как это выразить программно.

Ответы [ 3 ]

3 голосов
/ 31 марта 2011

Это заботится о том, чтобы X увеличивалось и уменьшалось. Я предполагаю: целые числа, 1-1 линейное отношение. (псевдокод) Обратите внимание, что lastXValue является глобальным или статическим для контекста.

int y; // comes from somewhere
int lastXValue = y;

function callBack(int currentXValue) {
 int delta = currentXValue - lastXValue; // Note: can be negative
 lastXValue = currentXValue;
 y -= delta;
}

Я также делаю предположение, что цикл инициируется и управляется в другом месте, и эта функция вызывается из цикла.

2 голосов
/ 31 марта 2011

Вы захотите использовать статическую переменную для сохранения состояния между вызовами функций.Читайте об этом на http://ee.hawaii.edu/~tep/EE160/Book/chap14/subsection2.1.1.6.html.

1 голос
/ 31 марта 2011

На основании ваших правок:

Итак, у меня есть расстояние до объекта, которое составляет x;У меня также есть масштаб слоя, который составляет y;

. По мере увеличения расстояния я бы хотел, чтобы масштаб слоя уменьшился.По мере уменьшения расстояния я бы хотел, чтобы масштаб слоя увеличивался.

Звучит так, что вы действительно хотите просто найти способ вычислить yот x.Скорее всего, это будет:

y = CONSTANT / x;

, где вы выберете CONSTANT в зависимости от того, какое именно отношение вы хотите иметь для двух переменных - это значение, которое будет y, когда x == 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...