我在游戏中进行碰撞检测。 所有的表面都是正交的,所以我只需要确定我的移动物体与障碍物的哪个面相撞。 我有一个矩形,它定义了两个对象的交点,还有一个向量表示移动对象的速度和移动方向。
我想我需要沿着我的移动物体向量平移相交矩形,直到交点变成一条线,然后我才能知道哪个面与第一个相撞。
但是我不知道如何以数学方式或编程方式执行此操作
最佳答案
计算从(物体内部障碍物的角)到(物体内部障碍物的角)的矢量。无论您的运动矢量位于该矢量的哪“边”,都会给出首先触摸的“边”。如果它们的角度相同,则角先接触。
例如这里你的运动矢量大约是 260 度,然后计算出的矢量大约是 240 度。从计算到运动逆时针是20度,顺时针是340度。因此逆时针方向(底部)首先发生碰撞。
您需要能够分辨出哪两个方面有问题,哪个是“顺时针”和“逆时针” - 我希望这是微不足道的。
关于C# 数学,碰撞检测,xna,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13398394/