到“拍”在目标对于那些你记住下降FREESPACE它有一个很好的功能,以帮助拍摄非制导导弹或激光,当你瞄准敌人:它的面前表现出十字线你追逐的那艘船告诉你在哪里射击才能击中移动目标。算法在3D游戏
我尝试使用回答AI algorithm to "shoot" at a target in a 2d game但它是2D所以我试图适应它。
我首先分解计算以求解XoZ平面的交点并保存x和z坐标,然后求解XoY平面的交点并将y坐标添加到最终的xyz,然后将其转换为剪贴区并放入在这些坐标处的纹理。但它当然不能如其所愿,否则我不会发布这个问题。
从我注意到在XOY发现在XOZ平面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 = minTime * finalEntityVelocity.y + finalTargetPos4D.y;
是我分成2架飞机和计算什么好方法吗?或者对3D来说有一个完全不同的方法?
- sqr()是方形而不是sqrt - 避免混淆。
我希望在这里没有重力... – Eric