代码之家  ›  专栏  ›  技术社区  ›  BeginnerDev

如何将矩形添加到数组中?

  •  -1
  • BeginnerDev  · 技术社区  · 6 年前

    我是libgdx新手,在向数组中添加矩形(“2”)时遇到了问题。添加并获取后,我无法检测碰撞。 我的代码如下:

    ...
    
    public class MyGdxGame implements ApplicationListener
    {
        Texture texture;
        SpriteBatch batch;
        Rectangle one, two;
    
        float x1=0,x2;
        float y1, y2;
    
        Array <Rectangle> array;
    

    在Create()中:

            texture = new Texture(Gdx.files.internal("android.jpg"));
            batch = new SpriteBatch();
    
            x2 = Gdx.graphics.getWidth()-40;
            y1 = y2 = (Gdx.graphics.getHeight()/2)-15;
    
            one = new Rectangle();
            two = new Rectangle();
    
            one.set(x1, y1, 40, 30);
            two.set(x2, y2, 40, 30);
    
            array = new Array <Rectangle>();
            array.add(two);
    

    在渲染器()中:

    ...
            batch.begin();
            batch.draw(texture, x1, y1, 40, 30);
            batch.draw(texture, x2, y2, 40, 30);
    
            try
            {
                Thread.sleep(10);
    
                x1 += 2;
                x2 -= 2;
    
                one.set(x1, y1, 40, 30);
                two.set(x2, y2, 40, 30);
    

    这就是问题所在,因为“一”矩形无法检测到与“两”矩形的碰撞:

    if(one.overlaps(array.get(1)))
                {
                    x1 = 0;
                    x2 = Gdx.graphics.getWidth()-40;
                }
            }
            catch(Exception e){}
    
            batch.end();
    

    谁能帮帮我吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Dawid Fieluba    6 年前

    您只将1个元素添加到数组中。

    array.add(two);
    

    要访问此对象,应使用: array.get(0); 而不是 array.get(1); 首先,我建议使用 列表 ,并且您可能希望有多个矩形来检查与它们的冲突:

    List<Rectangle> myList = new ArrayList<>();
    myList.add(two);
    for(Rectangle rect : myList) {
        if(one.overlaps(rect)) {
            //...
        }
    }