【问题标题】:LibGDX if 2 objects touches, do somethingLibGDX 如果有 2 个物体接触,做点什么
【发布时间】:2014-10-12 20:40:51
【问题描述】:

我一直在测试创建一个函数,如果两个对象接触(如果一个包含或它只是接触另一个),它会做某事。我发现了这个:

public boolean inBounds(float cx, float cy, int size)
    {
        Rectangle rec1 = new Rectangle(x, y, this.size, this.size);
        Rectangle rec2 = new Rectangle(cx, cy, size, size);

            if(rec1.contains(rec2)) return true;

        return false;
    }
    }

所以,这是我的 Entity 类中的一个触摸功能。所以,在我在渲染函数中调用的更新函数中,我有:

if (e instanceof Worm && player1.inBounds(e.x, e.y, e.size))  
            {
                entities.remove(i); //remove object from the scene
                i--;
                player1.incScore(); //increase score
            }

这很好用,但只有当我的角色比那个对象大时,我每次都需要它,不仅仅是当角色比对象大时。那么现在该怎么办呢?我找到了一个我可以像if (rec1.overlaps(rec2)) return true; 一样使用的函数,但现在,它可以工作了,是的.. 但是我的对象的纹理不是那么终极(这是对象:http://img24.cz/images/08705660216361901876.png),所以看起来很糟糕。如果对象在播放器附近,它会激活我的功能,我只想在对象在播放器中时才拥有它,这样我可以创建更好的纹理,这对我来说真的很难,或者我可以......我不知道我能做什么,所以,请帮助我。 :D

【问题讨论】:

  • 制作一个比播放器小的新矩形并放在播放器的中间。检查鱼是否与该矩形重叠。结果,鱼将在播放器内部进一步移动,直到它接触到内部矩形,然后您的函数将被触发,从而产生您正在寻找的行为。
  • 是的,很好,我试过了,它确实有效。 ;) :D 谢谢

标签: java object libgdx touch contains


【解决方案1】:

好的。

首先。 使用临时矩形,不要每帧都新建一个!

您正在检查 rectangle.contains(otherRectangle);它告诉您 otherRectangle 是否在矩形内。 您想检查矩形是否与另一个矩形重叠

private Rectangle tmpRect1=new Rectangle();
private Rectangle tmpRect2=new Rectangle();

在你的方法中

public boolean inBounds(float cx, float cy, int size)
    {
        tmpRect1.set(x, y, this.size, this.size);
        tmpRect2.set(cx, cy, size, size);

        return tmpRect1.overlaps(tmpRect2); // returns true if rectangles are overlapping, and false if not

    }

【讨论】:

    【解决方案2】:

    是的,但它不能解决我的问题。我的问题是,如果我使用重叠功能,它看起来不真实。因为(看http://img24.cz/images/08705660216361901876.png),你可以看到图像的顶部是干净的,没有我的鱼,我的鱼只是在图像的中间,所以看起来很糟糕,如果玩家低于或高于鱼,它给了我一个分数(因为它是重叠的(因为那个非最终图像))。包含功能更好,因为它看起来很逼真。所以我想要一个帮助,我怎样才能让它变得更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-13
      • 1970-01-01
      相关资源
      最近更新 更多