一段时间后预测对象的位置

时间:2019-11-19 16:57:04

标签: c++ physics-engine extrapolation

我目前正在尝试提出一种方法来高精度地“解决”玩家的位置。

位置将是导弹将被发送到的位置。导弹将具有速度/延迟/宽度和射程。玩家也有速度,并且很可能会尝试从导弹中走出来,这就是我要“预测”的东西。我可以过滤掉不可能向其发送导弹的所有地点(因为玩家无法移动到该地点,或者被另一个物体阻挡而无法移动到该地点),但是我仍然遇到了玩家试图移动导弹的问题。走出导弹。

一个简单的

const float missile_speed = 2000;
const float missile_width = 100;
const float missile_delay = 0.250f;

const float target_speed = 350;

float time_to_land = (player->position.distance_to(sender->position) / missile_speed) + missile_delay;

D3DXVECTOR3 position = player->position + player->direction *  time_to_land);

不会做到这一点,因为玩家可以在导弹发射时立即改变方向,从而有效地使其失手。那是我可以使用玩家的路径并将其分割,然后对其进行分析以找到我可以投到的最佳地点的地方,但是如果玩家突然改变方向,则摇晃问题仍然存在。导弹有时肯定会命中,但远不能始终命中。

我不知道该如何处理。我已经搜索了很长时间,并且大多数“解决方案”都是我在示例中使用的解决方案。

我应该如何正确处理?我正在考虑神经网络,但我不知道从哪里开始,也找不到任何资源可以使用AI详细介绍我的问题。请记住,我正在用C ++进行此操作。

1 个答案:

答案 0 :(得分:0)

我看不到导弹发射后的限制。 如果这种导弹可以在飞行过程中进行引导/重定向,那么某些解决方案(例如,每过1/10的time_to_land触发触发玩家位置的重新计算)就可以解决问题。您可以通过更频繁地触发来提高精度。 另一方面,如果需要在发射器之前确定播放器的位置,则它是不同的野兽。