キックされた後、AIプレーヤーがサッカーボールをインターセプトする場所を予測するにはどうすればよいですか?

Aug 18 2020

この質問はこれまで何度も聞かれましたが、ほとんどの答えは、ボール(ターゲット)が一定の速度で移動していると想定される問題の解決策を提供します。

私のシナリオでは、フットボールの試合をしています。ボールの剛体に力を加えてある方向にボールを蹴るとき、2人目のAIプレーヤーに、ボールのパスでボールをインターセプトできるポイントを見つけてもらいたいと思います。これで、このボールはフレームごとに減速し続けることができ、一定の速度で動き続けることはありません。

視覚化のために画像を添付しました。

私はボールの位置、ボールの現在の速度、AIプレーヤーの位置、AIプレーヤーの一定速度を知っています。AIプレーヤーがボールをインターセプトできるようなポイントを見つけるにはどうすればよいですか?

ボールの現在の速度でそのようなポイントを計算することはできますが、そのポイントは正確ではなく、フレームごとにボールの現在の速度が変化するにつれて変化します。これは、ボールがフレームごとに減速し続ける可能性があるためです。これにより、AIプレーヤーはホーミングミサイルのように動作します。代わりに、AIプレーヤーにポイントを予測して、それに実行してもらいたいです。

これが私が今まで持っていたC#(Unity)コードです:

public Vector3 CalculateIntercept()    
{       
     Vector3 pos = Ball.GetInstance().transform.position;
     Vector3 dir = Ball.GetInstance().GetVelocity();
     dir.y = transform.position.y;

     float dist = (pos - transform.position).magnitude;
     return pos + (dist / 6.17f) * dir; //6.17 is the AI player's constant speed.
}

ボールに抗力はありませんが、摩擦のある物理材料があります。私はこれを解決すると思います、多分加速を説明する必要があるかもしれません。

私がこれを理解するのを手伝ってください。ありがとう!

回答

Natalo77 Aug 18 2020 at 16:58

唯一のオプションは、ボールが蹴られたときにシミュレーションをドライランしてから、Aiにその場所への移動を開始させることです。