我正试图在沿y轴向下移动的物体上进行平移。但物体没有沿y轴移动。它保持在我设定为1.0f的初始位置。我可以知道这是什么问题吗?我该如何解决?
这是我的代码:
void balls () {
glTranslatef(0.0f, ball, 0.0f);
glBegin(GL_TRIANGLE_FAN);
glColor3f(0.0f, 0.0f, 1.0f); // Blue
glVertex2f(0.0f, 0.0f); // Center of circle
int numSegments = 100;
GLfloat angle;
for (int i = 0; i <= numSegments; i++) { // Last vertex same as first vertex
angle = i * 2.0f * PI / numSegments; // 360 deg for all segments
glVertex2f(cos(angle) * ballRadius, sin(angle) * ballRadius);
}
glEnd();
ball -= ySpeed; //move down
if (ball > -1.5f) {
ball = 1.0f;
}
glutPostRedisplay();
}
答案 0 :(得分:1)
您从ball = 1
开始:
GLfloat ball = 1.0f; //position
然后递减0.01
:
GLfloat ySpeed = 0.010f;
ball -= ySpeed; //move down
这给了我们ball == 0.99
。然后你这样做:
if (ball > -1.5f) {
ball = 1.0f;
}
自0.99 > -1.5
起,ball
重置为1
。冲洗并重复。
要解决这个问题,您的比较应该反映您正在进行的操作(减法):
if (ball < -1.5f) {
ball = 1.0f;
}
从ySpeed
开始减去 ball
,它低于 -1.5
。