我在游戏中进行碰撞检测。 所有表面都是正交的,所以我只需要确定我的移动物体碰撞的障碍物的哪个面。 我有一个矩形定义了两个物体的交点,矢量代表了移动物体的速度和运动方向。
我估计我需要沿着我的移动物体矢量转换交叉矩形,直到交点变成一条线,然后我就会知道哪个面与第一个相撞。
然而,我不知道如何以编程方式进行数学处理
答案 0 :(得分:3)
计算从(物体内部障碍物的角落)到(障碍物内部物体的角落)的矢量。无论运动矢量处于何处,此向量的“侧面”都会给出首先触及的“侧面”。如果它们具有相同的角度,则首先碰到角落。
E.g。这里你的运动矢量大约是260度,然后计算出的矢量大约是240度。从计算到运动的逆时针是20度,顺时针是340度。因此,逆时针侧(底部)首先相撞。
你需要知道哪两个方面有问题,哪个是“顺时针”和“逆时针” - 我希望这是微不足道的。
答案 1 :(得分:2)
您可以将速度矢量的aspect ratio与交叉矩形的纵横比进行比较。
对于这个特殊的例子,如果速度矢量比交叉矩形更陡(即定义一个更高更瘦的矩形),那么碰撞就在底面。
如果速度矢量较浅,则碰撞位于移动矩形的左侧。
如果速度矢量与交叉矩形具有相同的纵横比(即速度位于交叉矩形的对角线上),则它们会在角落处碰撞。
答案 2 :(得分:2)
其实我可能已经弄清楚了......
在交叉矩形上找到不在对象上的点 矩形
从矢量方向那里画一条线