Попытка переключения текстуры, когда игрок умирает (OpenGL + C ++) - PullRequest
2 голосов
/ 10 марта 2010

Я создаю 2D-игру, и когда игрок умирает, я хочу, чтобы текстура I переключалась на другую (чтобы показать взрыв), я также хочу, чтобы игра приостановилась на секунду или две, чтобы пользователь мог видеть, что текстура изменилось.

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

Я думаю, что это должно быть то, что он рендерится только в одном кадре, а затем исчезает или что-то в этом роде. Вот код.

void Player::die(){
if(Player::lives > 0){

    glPushMatrix();
    glEnable(GL_TEXTURE_2D);    
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glBindTexture(GL_TEXTURE_2D, explosionTex);
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

    glTranslatef(200, 200, 0.0);
    glRotatef(heading, 0,0,1);
    glColor3f(1.0,0.0,0.0);
        glBegin(GL_POLYGON);
            glTexCoord2f(0.0, 1.0); glVertex2f(-40,40);
            glTexCoord2f(0.0, 0.0); glVertex2f(-40,-40);
            glTexCoord2f(1.0, 0.0); glVertex2f(40,-40);
            glTexCoord2f(1.0, 1.0); glVertex2f(40,40);
        glEnd();


    glDisable(GL_BLEND);
    glDisable(GL_TEXTURE_2D);
    glPopMatrix();

    Sleep ( 1000 );

    *xscroll = 0;
    *yscroll = 0;
    Player::lives--;
    Player::XPos = 0;
    Player::YPos = 0;
    Player::heading = 0;
    Player::speed = 0;
}
}

Как я могу заставить его переключать текстуру, отображать ее и затем спать некоторое время?

1 Ответ

4 голосов
/ 10 марта 2010

Вам нужно поменять свои буферы перед сном (), если вы хотите что-либо увидеть.

В более общем случае замените Sleep () на ExplodeStart, для которого установлено значение CurrentTimeInMilliseconds (). Затем каждый раз в цикле рендеринга проверяйте, если CurrentTimeInMilliseconds () - ExplodeStart> 1000. Если это так, снова переключайтесь на обычную текстуру игрока.

...