2017-07-31 33 views
2

對不起,以下問題非常具體,但我正在尋找超過一個小時來解決我的問題:精靈更改其顏色每3秒鐘一次。我可以檢測用戶是否點擊了正確的顏色,但我無法檢測用戶是否正在等待下一個顏色得分。我嘗試下面的代碼:如何檢測精靈是否在某個時間間隔內未觸及

private float timeSeconds = 0f; 
private float period = 3f; 
timeSeconds += Gdx.graphics.getRawDeltaTime();  
for (int i=0;i<4;i++) { 
       if (executed == true && !(sprite[zahl[i]].getBoundingRectangle().contains(touchPoint.x, 
         touchPoint.y))&& timeSeconds==0 && zahl[4] != zahl[i]) { 
        timeSeconds = 0; 
        this.dispose(); 
        game.setScreen(new GameOverScreen(game, Integer.parseInt(score))); 
        return; 
       } 
      } 

此代碼的工作部分是:如果用戶doesn't觸摸屏,那麼GameOverScreen將被顯示。但是如果用戶點擊正確的顏色(=精靈),那麼GameOverScreen也會顯示。但是,如果用戶敲擊右側精靈,我想要遊戲繼續,並且我想結束遊戲,這意味着顯示GameOverScreen,如果用戶在三秒鐘內沒有在屏幕上點擊任何東西。

+0

我假設有某種計時器,所以當你觸及正確的事物時,你有一個布爾值,你設置爲true。當計時器結束時,如果它爲真,則將其設置爲false – Zoe

回答

0

這很難理解你在問什麼,但我認爲你的目標是讓用戶在3秒內至少觸摸一次屏幕。如果此時用戶未能觸摸,則會顯示屏幕上的遊戲。如果用戶觸摸了屏幕並觸摸了正確的顏色精靈,則需要增加3秒才能觸摸時間。然後,如果用戶觸摸了至少1個右側精靈,並且在3秒內未能觸摸,則將移動到級別完整屏幕。

讓我們來看看GameOverScreen吧。這個屏幕應該把你的遊戲對象,分數​​和布爾值表示遊戲結束或完成。然後,你可以調用遊戲畫面採用:

GameOverScreen(game,score,true); // game completed or 
GameOverScreen(game,score,false); // game over 

現在,我們已經結束畫面完成,我們可以在你的遊戲中添加計時器稱爲lastTouched:

float lastTouched = 3f; // 3 seconds of touch time 

接下來我們添加一個布爾值,所以我們知道如果用戶觸摸的正確的顏色精靈中的至少一個:

boolean atLeastOneTouched = false; 

現在我們降低計時器與每個幀:

lastTouched -= Gdx.graphics.getRawDeltaTime(); 

我們檢查你的精靈的觸摸像往常一樣沒有計時器的東西:

for (int i=0;i<4;i++) { 
      if (executed == true && !(sprite[zahl[i]].getBoundingRectangle().contains(touchPoint.x, 
        touchPoint.y)) && zahl[4] != zahl[i]) { 
       // touched right colour 
       atLeastOneTouched = true; 
       lastTouched = 3f; // reset timer 
      } 
     } 

最後,我們檢查,如果計時器已經用完了,然後根據atLeastOneTouched布爾根據屏幕得到:

if(lastTouched <= 0){ 
    if(atLeastOneTouched){ 
     GameOverScreen(game,score,true); // game over complete 
    }else{ 
     GameOverScreen(game,score,false); // game over failed 
    } 
} 
相關問題