检查java中两个对象之间的冲突

时间:2011-04-07 18:44:10

标签: java collision-detection

我有一个方法可以检查玩家和物品是否相交并将物品添加到库存中,但只有当矩形完全重叠时,该方法似乎才有效,除非我特别说明,否则该物品不会为空所以在小组中。否则,该项目会在面板周围移动,就好像什么也没发生一样。

public boolean obtainItem(Item item)
{
    if (item.moveable)
    {
        Rectangle p = getBounds();
        Rectangle i = item.getBounds();
        if (p.intersects(i))
        {
            inventory.add(item);
            i = null;
            System.out.println("hello");
            return true;
        }
    }
    return false;
}

我的getBounds()方法的代码是

public Rectangle getBounds()     {         bounds = new Rectangle(x,y,40,40);         回归;     }

它正在返回正确的界限

3 个答案:

答案 0 :(得分:2)

Javadoc for Rectangle清楚地表明,如果交叉点不为零,则rectangle.intersects()会返回true,否则为false

您的item.getBounds()getBounds()方法是否可能相对于不同的边界组件返回边界?

答案 1 :(得分:1)

  除非我在专家组中明确说明,否则

项目不会为空。

为什么不这样呢? i = null;只是将局部变量i设置为null。

答案 2 :(得分:0)

所有这些代码看起来都很好,假设您正在使用java.awt.Rectangle,因为iluxa指出。它很可能是您的Item类中的错误。你可以发帖吗?