C# C数学,碰撞检测,xna
我在游戏中做碰撞检测。 所有的表面都是正交的,所以我只需要确定我移动的物体与障碍物的哪一面碰撞。 我有一个矩形,它定义了两个对象的交点,还有一个向量,表示移动对象的速度和移动方向 我想我需要沿着我的移动对象向量平移相交矩形,直到相交变成一条线,然后我就会知道哪个面与第一个面发生了碰撞 然而,我不知道如何在数学上或编程上做到这一点C# C数学,碰撞检测,xna,c#,math,xna,collision-detection,C#,Math,Xna,Collision Detection,我在游戏中做碰撞检测。 所有的表面都是正交的,所以我只需要确定我移动的物体与障碍物的哪一面碰撞。 我有一个矩形,它定义了两个对象的交点,还有一个向量,表示移动对象的速度和移动方向 我想我需要沿着我的移动对象向量平移相交矩形,直到相交变成一条线,然后我就会知道哪个面与第一个面发生了碰撞 然而,我不知道如何在数学上或编程上做到这一点 计算从物体内部障碍物角点到物体内部障碍物角点的矢量。无论你的运动矢量在哪一侧,都会给出最先接触的那一侧。如果角度相同,则首先接触角 这里你的运动矢量大约是260度,然
计算从物体内部障碍物角点到物体内部障碍物角点的矢量。无论你的运动矢量在哪一侧,都会给出最先接触的那一侧。如果角度相同,则首先接触角 这里你的运动矢量大约是260度,然后计算出的矢量大约是240度。从计算到移动逆时针为20度,顺时针为340度。因此,逆时针方向的底部首先发生碰撞
你需要能够分辨出哪一边是有问题的,哪一边是顺时针的,哪一边是逆时针的-我希望这很简单。计算从物体内部障碍物的角到物体内部障碍物的角的向量。无论你的运动矢量在哪一侧,都会给出最先接触的那一侧。如果角度相同,则首先接触角 这里你的运动矢量大约是260度,然后计算出的矢量大约是240度。从计算到移动逆时针为20度,顺时针为340度。因此,逆时针方向的底部首先发生碰撞 你需要知道哪一边是有问题的,哪一边是顺时针的,哪一边是逆时针的-我希望这很简单。你可以比较速度向量的大小和相交矩形的纵横比 对于此特定示例,如果速度向量比相交矩形陡峭,即定义了一个更高、更薄的矩形,则碰撞发生在底面上 如果速度矢量较浅,则碰撞发生在移动矩形的左侧 如果速度矢量与相交矩形的纵横比相同,即速度位于相交矩形的对角线上,则它们在拐角处发生碰撞。您可以将速度矢量的纵横比与相交矩形的纵横比进行比较 对于此特定示例,如果速度向量比相交矩形陡峭,即定义了一个更高、更薄的矩形,则碰撞发生在底面上 如果速度矢量较浅,则碰撞发生在移动矩形的左侧
如果速度向量与相交矩形的纵横比相同,即速度位于相交矩形的对角线上,则它们在拐角处发生碰撞。事实上,我可能已经计算出了 在相交矩形上找到不在对象上的点 长方形 从那里沿矢量方向画一条线 无论它与哪一边相交,都是第一次碰撞的那一边
事实上我可能已经知道了 在相交矩形上找到不在对象上的点 长方形 从那里沿矢量方向画一条线 无论它与哪一边相交,都是第一次碰撞的那一边
非常好的绘画技巧我亲爱的先生。非常好的绘画技巧我亲爱的先生。谢谢你的帮助,但我认为那是不对的。如果我能在这篇评论中添加一张图片,这会很方便,但角度可能完全相同,但取决于两个正方形的相对位置,它们的垂直或水平边可能会发生碰撞1st@GuyeIncognito我明白你的意思。回到绘图板上。@GuyeIncognito拿两张-让我知道你对这件事的看法。谢谢你的帮助,但我不认为这是正确的。如果我能在这篇评论中添加一张图片,这会很方便,但角度可能完全相同,但取决于两个正方形的相对位置,它们的垂直或水平边可能会发生碰撞1st@GuyeIncognito我明白你的意思。回到绘图板上。@GuyeIncognito拿两个-让我知道你对此的看法。我想这相当于我的答案,只是更简单\o/我想这相当于我的答案,只是更简单\o/