0

私は Android 2D の「スペース ファイターズ」ゲームを開発しており、現在は AI を開発しています。

AI (敵) は特定の速度 V1 (V1x、V1y) で移動しており、最大速度でインターセプト ベクトルに一致するようにこの速度を調整したいと考えています。

インターセプト速度は次のように達成できることがわかっています。

V_intercept = (player.x - enemy.x, player.y - enemy.y)
normalize(V_intercept)
V_intercept.x *= MAX_SPEED
V_intercept.y *= MAX_SPEED

私が探しているのは、単一の速度を見つける方法ですv_correction。これを適用するtと、敵はプレイヤーに向かって正しい速度になります。

私は2つの機能を探していると思います:

getCorrectionVelocity(current_velocity, desired_velocity, acceleration) // not sure if acceleration is even needed here

getTimeToReachVelocity(current_velocity, desired_velocity, acceleration)

ノート:

質量と操舵時間は関係ありません。すべての質量 = 1、ある方向を向くまでの時間 = 0 と想像してください。

また、AI の他の部分でこれらのメソッドが必要になるため (たとえば、敵の速度がプレイヤーの速度と一致するまでにかかる時間を計算するため)、これらのメソッドは汎用的である必要があります。私が与えた速度に対する補正と時間を計算します。

前もって感謝します!

4

1 に答える 1

0

私はそれを別の方法で行います。時間ごとの正確な補正インパルスを計算することを忘れて、操縦を制御するだけです

AI操縦

したがって、計算dot_product(AI_velocity,delta)し、その符号に従って左または右に操縦します (方向は座標系によって異なります)。したがって、インターセプトするには、メイン推力を継続的に適用し、マイナーなステア推力もいくつか適用します。

しかし、このようなニュートン ダランベール物理学を実装する必要があります。

摩擦を適用したい場合はこちらもご覧ください

于 2014-05-29T07:08:21.467 に答える