簡體   English   中英

Libgdx游戲:基於得分計數的延遲動作

[英]Libgdx Game: Delay Action Based on Score Count

我在Java領域還很新,需要一些有關當前正在開發的游戲的幫助。 我已經實現了游戲的核心,即球從屏幕頂部掉落,並且用戶控制平台將球反彈到屏幕的右側。 如果玩家成功,則得分。 我已經實現了彈跳球,平台,得分和各種狀態的代碼。

我堅持的事情是根據得分控制落下的球的數量。 我已經對該算法有一個大概的了解。 無需贅述,它的內容如下:

public class BallContainer{

public ArrayList<Ball> balls;

public BallContainer(ArrayList<Ball> balls){
  this.balls = balls;
}

public void drop(int howMany){
//code to activate the gravity of "howMany" random balls with a .5 second delay between them

}

public class MainGame{

public void update(float dt){
//check score and drop a selection of balls with random seconds of delay between each group of balls dropped at a time
}
}

我已經知道了多少個球以及多少隨機延遲會取決於得分。 我只是想推遲行動。 我知道我們可以使用java.util.Timer和TimerTask,但我也聽說libgdx也有一些內置的延遲方法。 無論如何,任何幫助將不勝感激。
謝謝。

您可以只創建一個新線程,在其中放置一個標志,然后休眠新創建的線程,並在休眠完成后-將您的標志設置為true。

因此,如果您要休眠主線程,我們的游戲將不會凍結。

您可以使用libgx Timer類提供一定延遲后發生的操作。

這是一個例子-

Timer.schedule(new Task() {
    @Override
    public void run() {
        //create new balls here or do whatever you want to do.
    }
}, DELAY_TIME_IN_SECONDS);

這里發生的是您正在調用Timer類的靜態方法,該方法稱為schedule,該方法將Taskfloat delaySeconds作為參數。

現在,作為參數,您正在創建一個新的Anonymous內部類對象,因為Task是一個抽象類。 在匿名內部類對象中,您將覆蓋run方法並放入您希望它執行的操作。

將以上代碼片段放在您要創建新球或執行某些操作的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM