我正在为我的openGL课程开发一个应该模仿溜溜球的项目,我正在取得进展,但在检查屏幕边界时似乎遇到了障碍。我试图得到它,以便一旦球到达屏幕的底部,它开始上升,反之亦然,并且非常感谢帮助!
我有三个上面声明的静态浮点数将由函数递增,我试图检查deltay以限制球的移动。
下面是我的翻转球的功能,球移动但会继续移动超过我设定的边界
void moveYoYo() {
glClear(GL_COLOR_BUFFER_BIT);
//going up
if(flag == 1)
{
deltay -= .05;
if(deltay <= -.002)
{
flag = 0;
}
}
//going down
if(flag == 0)
{
deltay += .05;
if(deltay >= .002)
{
flag = 1;
}
}
glPushMatrix();
glTranslatef(deltax,deltay,deltaz);
display();
glPopMatrix();
glFlush();
glutSwapBuffers();
}
答案 0 :(得分:1)
如果你希望那个球在屏幕的底部和顶部之间反弹,那么它改变方向的下限应该是&lt; = -0.002而上限&gt; = 1.002如果你想使用那些奇怪的数字。无论如何更好的是使用较少的随机数,如f.e。:
if (flag == 1) {
// Going down
deltay -= 0.05f;
if (deltay == 0)
flag = 0;
} else if (flag == 0) {
// Going up
deltay += 0.05f;
if (deltay == 1)
flag = 1;
}
另外如果标志仅用作0或1,为什么不使用bool?