我有一个方法可以检查玩家和物品是否相交并将物品添加到库存中,但只有当矩形完全重叠时,该方法似乎才有效,除非我特别说明,否则该物品不会为空所以在小组中。否则,该项目会在面板周围移动,就好像什么也没发生一样。
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); 回归; }
它正在返回正确的界限
答案 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类中的错误。你可以发帖吗?