如何制作反比例循环?

时间:2011-03-31 02:59:19

标签: c++ objective-c c xcode cocos2d-iphone

嘿,我正在尝试编写一个在1/60 fps的方法中更新的循环。 基本上,我试图找出如何写一个循环说:

如果x正在增加。减少y

我尝试为x定义两个变量; x1x2x1是原始值,x2是更改后的值。

int x1,x2,y;
x1 = x2;

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

但这显然不起作用,因为每1/60fps x1 == x2因此参数无效。
任何帮助将不胜感激。

谢谢,
奥利弗

编辑:

所以我有一个物体的距离,即x;
我也有图层的比例,y;

随着距离的增加,我希望图层的比例减小 随着距离的减少,我希望层的比例增加。

实际应用是,两个物体之间的距离增加,因此层的比例减小,从而缩小,使两个物体保持在层相机内。

我根本不知道如何以此方式表达这一点。

3 个答案:

答案 0 :(得分:3)

这会照顾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;
}

我也假设循环在其他地方启动和控制,这个函数从循环中调用。

答案 1 :(得分:2)

您需要使用静态变量来保存函数调用之间的状态。请在http://ee.hawaii.edu/~tep/EE160/Book/chap14/subsection2.1.1.6.html处阅读。

答案 2 :(得分:1)

根据您的修改:

  

所以我有一个物体的距离,   这是x;我也有规模   图层,y;

     

随着距离的增加,我愿意   喜欢图层的比例   减少。随着距离的减少,我   想要图层的比例   增加。

这听起来像你真正想要的只是找出一种从y计算x的方法。可能是这样的:

y = CONSTANT / x;

根据您希望两个变量具有的确切关系选择CONSTANT,这是yx == 1所拥有的值。