在3D游戏中向目标射击的算法
对于那些想起“下降自由空间”的人来说,它有一个不错的功能,可以帮助您在射击非归巢的导弹或激光时瞄准敌人:它在您追赶的船前显示了十字准线,告诉您在哪里射击才能击中移动的物体。目标。 我尝试使用来自/programming/4107403/ai-algorithm-to-shoot-at-a-target-in-a-2d-game?lq=1的答案,但它适用于2D,所以我尝试了适应它。 我首先分解计算以求解XoZ平面的交点并保存x和z坐标,然后求解XoY平面的交点,然后将y坐标添加到最终的xyz中,然后将其转换为剪贴空间并在其上放置纹理坐标。但是,它当然不能正常运行,否则我就不会提出这个问题。 根据我的发现,在XoZ平面中找到x和在XoY中找到x之后,x并不相同,因此一定有问题。 float a = ENG_Math.sqr(targetVelocity.x) + ENG_Math.sqr(targetVelocity.y) - ENG_Math.sqr(projectileSpeed); float b = 2.0f * (targetVelocity.x * targetPos.x + targetVelocity.y * targetPos.y); float c = ENG_Math.sqr(targetPos.x) + ENG_Math.sqr(targetPos.y); ENG_Math.solveQuadraticEquation(a, b, c, collisionTime); 第一次targetVelocity.y实际上是targetVelocity.z(与targetPos相同),第二次它实际上是targetVelocity.y。 XoZ之后的最终位置是 crossPosition.set(minTime * finalEntityVelocity.x + finalTargetPos4D.x, 0.0f, minTime * finalEntityVelocity.z + finalTargetPos4D.z); 在XoY之后 crossPosition.y = …