【发布时间】:2015-07-30 03:17:06
【问题描述】:
我的问题实际上可以分为两部分。首先,在 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 点)。
知道这些点是按连接顺序排列的(例如,它们形成对象的边界),那么说我可以使用多种线相交方法来查找字符是否与我的多边形的边界相交是否合乎逻辑?我知道角色的当前位置,以及预期的位置。
有什么想法,或者如果您有更好的实现方法的建议?
【问题讨论】:
-
Knowing the points are in a connected order (e.g. they form the boundary of the object), is it then logical to say I could just use a number of line intersection methods to find if the character intersected with the border of my polygon?如果我们谈论的是 2D 中的两个多边形,那么是的。 -
如果角色不能完全在多边形内(反之亦然),那么是的......
-
回答 - 是的,二维空间。我对处于多边形“内部”有些担心,但我确信我可以稍后处理(或进行检查)。