检查java中两个对象之间的冲突
我有一个方法,可以检查玩家和物品是否相交,并将物品添加到库存中,但该方法似乎只有在矩形完全重叠的情况下才起作用,并且除非我在面板中明确说明,否则物品不会为空。否则,该项会在面板上继续移动,就好像什么也没发生一样检查java中两个对象之间的冲突,java,collision-detection,Java,Collision Detection,我有一个方法,可以检查玩家和物品是否相交,并将物品添加到库存中,但该方法似乎只有在矩形完全重叠的情况下才起作用,并且除非我在面板中明确说明,否则物品不会为空。否则,该项会在面板上继续移动,就好像什么也没发生一样 public boolean obtainItem(Item item) { if (item.moveable) { Rectangle p = getBounds(); Rectangle i = item.getBounds();
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()方法的代码如下
公共矩形getBounds()
{
边界=新矩形(x,y,40,40);
返回边界;
}
它正在返回正确的边界假设您使用的是iluxa指出的java.awt.Rectangle,那么所有这些代码看起来都很好。这很可能是Item类中的错误。你能贴出来吗?这清楚地表明,如果交点不为零,则
矩形.intersects()
返回true
否则false
您的item.getBounds()
和getBounds()
方法是否可能返回相对于不同边界组件的边界
除非我在面板中明确说明,否则项不为空
为什么会这样呢<代码>i=null代码>只需将局部变量i设置为null。您的代码看起来不错。打印出两者的边界,确保它们是您期望的,并且您不认为向我们展示
Rectangle.intersects()
方法会有用吗?这实际上是java.awt.Rectangle方法,对吧(或者至少我希望如此)啊。这对我来说并不明显。另外,我的Eclipse告诉我运行库中没有Rectangle
类,但这是因为我告诉它要完全隐藏java.awt.*
!英雄联盟