我的问题实际上可以分为两部分。第一,是什么是在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点)。
知道点是连接的顺序(例如它们形成了对象的边界),然后逻辑上说我可以使用多个线交叉方法来查找字符是否与我的多边形的边界相交?我知道角色的当前位置,以及预期的位置。
有任何想法,或者您是否有更好的实施方法?