java - 检查java中两个对象之间的碰撞

标签 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)矩形 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/

相关文章:

java - 难以理解链式哈希表的实现

java - 无法在 Android 10 中创建目录

java - 在mapdb中使用 `checksumHeaderBypass`的成本是多少?

Java 更有资源的碰撞检测

c# - 如何确定矩形的哪一边与圆碰撞

android - Android 中 SurfaceView Canvas 上位图的碰撞检测

java - 通过流功能流时间戳

java - ExpandableListView 中的 Android 数据绑定(bind)

java - 如何在Translate Transition(JavaFX中)中实现碰撞检测?

javascript - 如何重新启动动画中的循环?