【发布时间】:2020-07-24 17:48:20
【问题描述】:
我正在开发一个小型物理引擎,但遇到了死胡同。我正在尝试做的是从四边形位置(二维矢量)的原点投射光线到基于其速度的方向。四边形的速度也是一个二维向量。
要获得投射光线的方向,我执行以下操作:
(quad.position + quad.velocity) - quad.position
这将返回一个可用作方向的二维向量。我面临的问题是,当一个轴或两个轴都为 0 时,进行上述数学运算时没有方向。结果将在其轴之一(没有速度)中具有 0。
我使用这个方向的方式是使用这个射线来检查另一个四边形之间的碰撞。这可以通过计算沿着发生命中的光线的确切“时间”来完成。我通过获得第二个四边形的位置 - 光线的原点(第一个四边形的位置)/光线方向来做到这一点。显然,当方向轴之一为 0 时,会出现 DivideByZero 错误。
我想知道我能做些什么来解决这个问题。我仍然要进行光线投射,但好像它是无限的。或者更确切地说,进行光线投射,但是沿着以 0 为方向的轴在一条直线上。当我传递一些像 0.00001 这样的任意数字时,一切正常,但是光线投射稍微偏离了我想要的直线。
我一直在网上寻找,但似乎找不到任何有用的东西。
【问题讨论】:
-
当您将一个向量除另一个向量时,我不知道您在做什么,但我很确定这不是检查碰撞的好方法。
-
跟着一个YT,源代码可以在这里找到:github.com/OneLoneCoder/olcPixelGameEngine/blob/master/Videos/… 特别是函数RayVsRect。
标签: game-physics physics-engine