Java 游戏物理 - 确定相交和碰撞检测

Java Game Physics - Determine intersection and collision detection

我的问题其实可以分为两部分。首先,在 Java 游戏中确定碰撞的合理方法是什么?我的第二个,如何找到碰撞点以备后用?

最初我是使用一个线程来实现一个基本的碰撞系统,我之前发现了一个简单的方法来查找多边形中的碰撞。我已经发布了下面的代码。然而,据我所知,这不会显示碰撞点,我必须单独做一些事情才能找到它。

public boolean collisionDetection(int charX, int charY) {
    if(boundry == null)
        return false;

    int numVert = boundry.length;
    boolean ret = false;
    for(int i = 0, j = numVert - 1; i < numVert; j = i++) {
        if (((boundry[i].y >= charY) != (boundry[j].y >= charY)) && (charX <= (boundry[j].x -boundry[i].x) * (charY - boundry[i].y) / (boundry[j].y - boundry[i].y) + boundry[i].x)) {
             ret = !ret;
        }
    }
    return ret;
}

但是我在做这个的时候有一个想法......让我们假设我将我的坐标作为点输入到系统中。我按顺序做了(例如第 1 点 -> 第 2 点 -> 第 3 点 -> 第 1 点)。

知道这些点是按顺序排列的(例如,它们形成了对象的边界),那么说我可以只使用多种线相交方法来查找字符是否与对象的边界相交是否合乎逻辑我的多边形?我知道角色的当前位置,以及预期的位置。

有什么想法,或者您有更好的实施方法建议吗?

你需要做指向 pint 或框到框碰撞看我的回答 here

这解释了碰撞检测的两种方法。它是 3D 的,但只需放下第三个轴即可用于 2D。希望这有帮助