【发布时间】: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