Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查java中两个对象之间的冲突_Java_Collision Detection - Fatal编程技术网

检查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.*
!英雄联盟