2

2D ゲームを作成していますが、プレイヤーが死亡したときにテクスチャを別のテクスチャに切り替えたい (爆発を表示する) また、ゲームを 1 秒か 2 秒一時停止して、テクスチャが変更されたことをユーザーが確認できるようにします。

テクスチャを形状に適用できるため、テクスチャが正しく読み込まれています。プレイヤーの元のテクスチャと切り替えたと言うと、それを見ることができます。

1フレームだけレンダリングして消えるとかそういうことじゃないかなと思います。これがコードです。

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

1 に答える 1

4

何かを見たい場合は、Sleep() の前にバッファを交換する必要があります。

より一般的には、Sleep() を、CurrentTimeInMilliseconds() に設定した ExplodeStart に置き換えます。次に、レンダリング ループのたびに、CurrentTimeInMilliseconds()-ExplodeStart > 1000 かどうかを確認します。そうである場合は、通常のプレーヤー テクスチャに再度切り替えます。

于 2010-03-10T16:46:38.730 に答える