2016-10-05 45 views
2

我使用類似於Flappy Bird中的分數系統創建遊戲。遊戲邏輯 - 通過障礙物後僅添加一次分數

if you didn't get it

當玩家成功通過左,右 障礙我希望我的成績變量由1提高我不知道它背後的邏輯,但。

現在我有(這裏面一個for循環檢查的更新方法,每一個障礙):「在」確保將比分只有1

if (bird.getPosition().y > obstacle.getPosLeft().y) { 
    if (!over) { 
    over = true; 
    score++; 
    } 

當增加

障礙物離開屏幕(是的,y是0在底部,而不是頂部):

if (obstacle.getPosLeft().y + Obstacle.OBSTACLE_HEIGHT < 0){ 
    obstacle.reposition(obstacle.getPosLeft().y + (OBSTACLE_SPACING + Obstacle.OBSTACLE_HEIGHT)* OBSTACLE_COUNT); 
    over = false; 
} 

的問題是,可以在第一一個得到重新定位,這意味着噸之前經過2障礙物對帽子你只得到reposition()被稱爲障礙1後的第二點。

你會如何解決這個問題?

+0

如果你只是'評分++'而不是'if'語句會發生什麼? –

+0

如果我超過任何障礙,它只是爲每個勾號添加分數。我的意思是,你會得到很多積分(這很酷且全部),但那不是我想要做的。 – S5amuel

+0

當你通過障礙物時,你能否調用正確的位置?既然你已經通過障礙,你不再關心它,所以你可以重新定位它。試試看。 –

回答

0

只需製作一個「obstacle.over」布爾值,以便每個都有自己的狀態。

+1

哦,是的,我完全忘記了每個障礙都有自己的變數。愚蠢的我。非常感謝。 – S5amuel