C# 数学,碰撞检测,xna

标签 c# math xna collision-detection

我在游戏中进行碰撞检测。 所有的表面都是正交的,所以我只需要确定我的移动物体与障碍物的哪个面相撞。 我有一个矩形,它定义了两个对象的交点,还有一个向量表示移动对象的速度和移动方向。

我想我需要沿着我的移动物体向量平移相交矩形,直到交点变成一条线,然后我才能知道哪个面与第一个相撞。

但是我不知道如何以数学方式或编程方式执行此操作 enter image description here

enter image description here

最佳答案

计算从(物体内部障碍物的角)到(物体内部障碍物的角)的矢量。无论您的运动矢量位于该矢量的哪“边”,都会给出首先触摸的“边”。如果它们的角度相同,则角先接触。

例如这里你的运动矢量大约是 260 度,然后计算出的矢量大约是 240 度。从计算到运动逆时针是20度,顺时针是340度。因此逆时针方向(底部)首先发生碰撞。

您需要能够分辨出哪两个方面有问题,哪个是“顺时针”和“逆时针” - 我希望这是微不足道的。

关于C# 数学,碰撞检测,xna,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13398394/

相关文章:

c# - 我如何计算矢量的反面,增加一些松弛

java - 构建对象列表时仅检索某些属性

c# - 如何制作可在 C# 应用程序中引用的 Win32 DLL?

javascript - 色彩平衡公式添加过多白色

c# - 如何将 .tmx(Tile Map Editor)文件导入我的 XNA 项目

c# - 在 C# 中识别空对象

c# - DateTime.Now 到底什么时候更新?

c# - 抽象类和虚方法: cannot access certain variables

c++ - 正弦和余数的近似

c# - 无法显示所有十进制数字 C#