我正在构建一个等距游戏,我想以一种特殊的方式定位和排序对象。我所有的实体都有三维边界,这决定了它们的长方体,在我的例子中,一个不同的边缘被用来决定一个长方体是否在另一个长方体前面,这取决于b2点是左还是右a2。
我已经计算了所有的点a1,a2,b1,b2,它们是x,y,z,我想我基本上需要画出“边”和“边”,并比较一些交点。
如果b2是正确的a2,绿长方体(b)是考虑在红色长方体前,当bline是东南的线。
如果b2在a2的左边,则当bline位于aline西南方向时,在红色长方体前面考虑绿色长方体(b)。
请原谅我在这里的无知,我相信这里有一些我应该使用的术语。我在努力用语言表达我所需要的东西。
发布于 2014-07-02 10:21:25
我不知道你是如何设置你的轴,所以这将工作在任何情况下,面孔是平行的。
从bx中减去ax。(ax是面/边a上的任意点/顶点,bx是面/边b上的任意点/顶点)这给出了一个向量。然后将向量投影到正在测试的脸的法线上(这是一个单位向量)。即:
#pseudocode
v = bx - ax // e.g. a1 - b1
n = (-1, 0, -1).normalize // Change this based on how your axes are set up
vec_proj = v.dot(n) // dot product of the vector and normal
if (vec_proj > 0) {
// in front
} else {
// behind or overlapping
}
https://gamedev.stackexchange.com/questions/79590
复制