1

情况是这样的:

在此处输入图像描述

我的 2D 线碰撞检测与反射一样运行良好。但我遇到的问题是,当一条线与三角形的顶点相撞时(即 3 2DLine = line(1), line(2), line(3)),它有时会反映在预期的线上,但有时它反映在错误的线上。

换句话说,在上图中:红线有时反映在预期的线(3)上,有时反映在线(1)上,当它反映在错误的线上(在图像上,第 1 行)时,它会进入三角形并反射,直到它碰撞一个顶点。

我知道问题是三角形的线重叠,我的函数首先检查红线是否与线(1)相撞,然后是否与线(2)相撞,最后与线(3)相撞,所以红色线首先反映在线(1)上,但我想不出另一种方式来解决这个问题。

4

1 回答 1

1

你可以:

(a) 将新的速度向量设置为 (C - P1),其中 C 是三角形的中心,P1 是顶部顶点。换句话说,从三角形反弹。

(b) 忽略顶点碰撞。

这取决于您希望模拟的准确度。对于一款游戏,我通常选择忽略这种罕见的情况,而不是编写特殊的代码来“正确”处理它们。只要结果看起来合理,就没有人会注意到或关心。

于 2013-10-22T17:07:32.743 回答