如何将Rectangle添加到Array中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将Rectangle添加到Array中?相关的知识,希望对你有一定的参考价值。

我是libgdx的新手,我有问题要在我的Array中添加一个矩形(“两个”)。添加并获取后我无法检测到碰撞。我的代码如下:

...

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);

在Renderer()中:

...
        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个元素。

array.add(two);

要到达这个对象你应该使用:array.get(0);而不是array.get(1);首先我建议使用List,因为你可能想要有多个矩形来检查它们的碰撞:

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

以上是关于如何将Rectangle添加到Array中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字节数组附加到Go中的字节片[重复]

如何添加方法并拦截来自不同类的私有字段

php如何将二维数组添加到数据库中,如何遍历

如何将图标添加到导航抽屉中的项目

如何将字符串数组中的所有项目添加到 Java 中的向量中?

即使在 SwiftUI 中调整矩形大小,如何将点转换为 Rectangle 的点?