2017-04-19 22 views
-1

私のゲームには、3つの状態、実行中の状態、一時停止状態、およびgameOverがあります。 3つすべてが整数変数gameStateによって監視されます。一時停止ボタンを押すと、状態は1(一時停止)に切り替わります。実行中にボタンをクリックするとすべて正常に動作しますが、gameOver状態でボタンを押すと、レンダリングメソッドで設定された条件が無視されます。一時停止状態にする必要がありますボタンは罰金を表示することになっているよう LibGDXレンダリングメソッドが正しく更新されていませんか?

if(gameState == 1) 
    sb.draw(pausemenu, cam.position.x - 315,cam.viewportHeight/2 - 625/2, 625, 625); 

table.setPosition(cam.position.x, 560); 

if(gameState == 2){ 
    sb.draw(gameover, cam.position.x - gameover.getWidth()/2 - 85 , cam.viewportHeight/2 - gameover.getHeight()/2, 600, 500); 
    highScoreFont.draw(sb, "Highscore: " + highScore, cam.position.x - highScoreFont.getScaleX()/2 - 250 , cam.viewportHeight - 425, 500, Align.center, true); 
    coinsFont.draw(sb, coins, cam.position.x - 201, cam.viewportHeight - 590, 500, Align.center, false); 
    sb.draw(coin, cam.position.x - layout.width/2 - 51, cam.viewportHeight - 660, 90, 90); 
    restartButton.setPosition(cam.position.x - restartButton.getWidth()/2, 525); 
} 

私はボタンを押す

は、音が、演奏されますが、ポーズメニューが描かれていないとゲームオーバー1はdissapearingされていません。私は何が欠けていますか? 更新方法:

if(gameState == 0 && tableVisible){ 
    table.setVisible(false); 
    pauseButton.setVisible(true); 
    tableVisible = false; 
    restartVisible = false; 
} 
else if(gameState == 2 && !restartVisible) { 
    restartButton.setVisible(true); 
    restartVisible = true; 
    layout.setText(coinsFont, getCoins() + ""); 
} 
else if(gameState == 1) { 
    if(restartVisible) { 
     restartButton.setVisible(false); 
    } 
    pauseButton.setVisible(false); 
    if(!tableVisible) { 
     table.setVisible(true); 
     tableVisible = true; 
    } 
} 
+0

表示されたコードは問題の診断に役立つものではないため、ボタンクリックのコードを投稿できますか? – dfour

+0

一時停止ボタンは単にサウンドを再生します。gameState = 1 – vladutelu

+0

投稿されたコードは上手く見えますが、エラーはどこか他の場所にある必要があります。他の場所でgameStateをチェックしていますか? – dfour

答えて

1

でゲーム状態を実現するための洗練された方法が既にあり、それは2

EDITに変更された後gameStateが変更された場合には、renderメソッドのようなチェックを停止していますlibGDXフレームワーク。 ApplicationListenerを実装する代わりに、Gameを拡張する必要があります。その後、ゲームの状態固有のコードをScreenを実装する他のクラスに移動します。ゲームの状態を切り替えるには、GameクラスのsetScreen(Screen screen)に電話する必要があります。

+0

まあ、私は本当に今これを学ぶ忍耐を持っていません。私のレンダー方法で私を助けてもらえますか?それが私の今の主な優先事項です。後で、私はおそらくあなたのこの方法を見てみましょう – vladutelu

+2

@vladuteluあなたの間違いはあなたの厄介なコードから最終的に来ています。上記の方法を使うことで、ここでバグがあると思われるチェックがあれば、それほど多くは必要ないはるかにクリーンなコードを得ることができます。 – Skrelp

+0

見て、私は初心者です。私は後で自分のコードをきれいにしようとします。今、私は本当にこのバグを修正する必要があります。 – vladutelu

関連する問題