java - 我的 libgdx 计时器更新间隔太快

标签 java timer libgdx

我的 libgdx 计时器旨在每秒产生一个随机数,但是当我将计时器放入渲染方法中时,它的更新速度比每秒一次要快得多,我不知道如何解决这个问题。另外,在我的游戏中,灌木丛是假设在敌人开枪之前沙沙作响,但这一切似乎都是同时发生的。

    timer.scheduleTask( new Task(){ public void run(){
    rando =rn.nextInt(8);
    Gdx.app.log("the num is", Integer.toString(rando));
    if(rando == 0){
        bush.rustle();
        bush2.rustle2();
        bush3.dontrustle3();
        bush4.dontrustle4();
        enemy.shoot();
        enemy2.shoot();
        enemy3.godown();
        enemy4.godown();


    }
     if(rando == 1){
        bush.dontrustle();
        bush2.rustle2();
        bush3.rustle3();
        bush4.dontrustle4();
        enemy.godown();
        enemy2.shoot();
        enemy3.shoot();
        enemy4.godown();

    }
    if(rando == 2){
        bush.rustle();
        bush2.dontrustle2();
        bush3.rustle3();
        bush4.rustle4();
        enemy2.godown();
        enemy.shoot();
        enemy4.shoot();
        enemy3.shoot();


    }

    if(rando == 3){
        bush.rustle();
        bush2.rustle2();
        bush3.rustle3();
        bush4.rustle4();
        enemy.shoot();
        enemy2.goup();
        enemy4.goup();
        enemy3.shoot();

    }

    if(rando == 4){
        bush.rustle();
        bush2.rustle2();
        bush3.rustle3();
        bush4.rustle4();
        enemy2.godown();
        enemy.godown();
        enemy4.shoot();
        enemy3.shoot();


    }

    if(rando == 5){
        bush.rustle();
        bush2.rustle2();
        bush3.rustle3();
        bush4.rustle4();
        enemy2.godown();
        enemy.shoot();
        enemy4.godown();
        enemy3.shoot();


    }

    if(rando == 6){
        bush.rustle();
        bush2.rustle2();
        bush3.rustle3();
        bush4.rustle4();
        enemy2.godown();
        enemy.goup();
        enemy4.godown();
        enemy3.godown();


    }

    if(rando == 7){
        bush.rustle();
        bush2.rustle2();
        bush3.rustle3();
        bush4.rustle4();
        enemy2.shoot();
        enemy.goup();
        enemy4.shoot();
        enemy3.shoot();


    }




    }}, 1,1);

最佳答案

你的随机数每秒被调用大约 60 次。和你的fps一样。 这是一个简单的技巧。在渲染中创建一个计数器并递增它。当counter%60==0时则产生一个随机数

 public void render(float deltaTime)
  {
   counter++;
   if(counter%60==0) // if u need more precision mode it by your fps
    {
     get a random number
     counter=0;
    }
   // code for render 
  }

希望这有帮助

关于java - 我的 libgdx 计时器更新间隔太快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32322562/

相关文章:

java - 将 TextField 文本获取到第二类

java - Gradle/Java 访问被 wsimport 任务拒绝

java - 在 mysql java 中循环 - 搜索模板

java - 如何安排任务以定期间隔运行?

股票行情指示器的 C# 异步任务

excel - 如何在 VBA 中制作安全的 API 计时器?

java - 字符串不变性允许缓存哈希码值

java - 将 Freetypefont 放入 libgdx 皮肤

java - LibGDX 光标图像像素图不是 RGBA8888 格式

Java 和 libgdx : How can I use this variable in two overridden methods?