Libgdx落圈

时间:2015-05-16 23:01:49

标签: java libgdx geometry

我正在开发一个libgdx游戏并且遇到了一些问题。我试图不断生成随机坐标(在屏幕上方),并为每个坐标画一个圆圈。然后添加到它们的y坐标,这样它们就会产生下降效果。一旦圆圈离开屏幕,它就会被删除。

这里我创建了2D列表。它包含屏幕中的随机坐标数组。

List<List<Integer>> lst = new ArrayList<List<Integer>>();

public void makePoints() {
    Random generator = new Random();
    for (int i = 0; i < 10; i++) {
        List<Integer> lst1 = new ArrayList<Integer>();
        int randX = randInt(10,Gdx.graphics.getWidth()-10);
        int randY = randInt(Gdx.graphics.getHeight()/5,Gdx.graphics.getHeight()-10);
        lst1.add(randX);
        lst1.add(randY);
        lst.add(lst1);
    }
}

在游戏循环之前,我调用函数

然后在游戏循环中,我这样做。 (请记住,这是一遍又一遍地运行)

//Draw a circle for each coordinate in the arraylist
    for (int i=0; i<lst.size();i++){
        shapeRenderer.circle((lst.get(i)).get(0), (lst.get(i)).get(1), 30);
    }

    //Add 1 to the y value of each coordinate
    for (int i=0; i<lst.size();i++){
        lst.get(i).set(1, i + 1);
    }

目前,它绘制了10个圆圈并且非常快速地丢弃它们。 我需要能够不断产生积分并减慢掉落速度。

非常感谢!

1 个答案:

答案 0 :(得分:0)

你应该考虑使用while循环,它在游戏还活着时运行。删除你的for i少于10个循环并实现while循环,它将继续为线程的生命周期创建球。至于减慢球的创建 - 调用thread.sleep()函数并实现类似的方法:

public void run()
{
        while (alive)
        {
            createNewCircle();
            updateGame();
            repaint();
            try
            {
                Thread.sleep(100);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
}

有关使用线程编程的更多信息 - 请检查this out