我有一种方法可以检查玩家和元素是否相交并将元素添加到库存中,但该方法似乎仅在矩形完全重叠时才有效,并且除非我特别说明,否则元素不会变为空所以在面板中。否则,该项目会继续在面板上移动,就好像什么也没发生一样。
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)矩形 getBounds() { bounds = new Rectangle(x, y, 40, 40); 返回范围;
它返回正确的边界
最佳答案
Javadoc for Rectangle清楚地表明,如果交集不为零,则 rectangle.intersects()
返回 true
,否则返回 false
。
您的 item.getBounds()
和 getBounds()
方法是否可能返回相对于不同边界组件的边界?
关于java - 检查java中两个对象之间的碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5585961/