gpt4 book ai didi

c++ - OpenGL 检查屏幕边界

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:09:58 26 4
gpt4 key购买 nike

我正在为我的 openGL 类开发一个项目,该项目应该模拟溜溜球,我正在取得进展,但在检查屏幕边界时似乎遇到了障碍。我正在努力做到这一点,以便一旦球到达屏幕底部,它就会开始上升,反之亦然,非常感谢您的帮助!

我在上面声明了三个静态 float ,它们将由函数递增,我正在尝试检查延迟以限制球的移动。

下面是我平移球的函数,球移动但会继续移动超过我设置的边界

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.002,如果你想使用那些奇怪的数字,上限应该 >= 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?

关于c++ - OpenGL 检查屏幕边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43333083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com