我的 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/