2010-03-10 2 views
2

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

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

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

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; 
} 
} 

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

ответ

4

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

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

+0

Я сделал SwapBuffers (hDC); до сна, но ничего не изменилось – Chris

+0

Хорошо, я получил это, чтобы работать сейчас, но некоторые другие вещи исчезают? – Chris

+1

Не волнуйся, я справился, понял, что я меняю буфер, прежде чем все будет сделано. – Chris