繁体   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