私は Java の友達と一緒に小さなタワーディフェンスゲームを作っています。今、私はタワーのロジックを割り当てられており、現時点では、ターゲットのモンスターを狙って攻撃するためにタワーがどのように回転する必要があるかを理解しようとしています. モンスターはタワーが回転して射撃している間に移動するため、将来の位置を狙う必要があります。モンスターの位置をいつでも t で表す関数と、モンスターに向けるのに必要な角度を小さくする関数を実装しましたが、3 つの未知の変数があるため混乱しています。
- t1 or angle: タワーが回転する必要がある時間または角度 (タワーが回転できる速度が与えられます)
- t2 または 発射距離: 弾丸がターゲットに命中するまでに移動する必要がある時間 (速度も与えられ、一定)。
- t3 または移動距離: モンスターが同時に移動する距離。
だから私は次の解決策を探しています:
min(t1+t2) = min(t3)
対象のモンスターがまだタワーの範囲内にいる場合。必要な最大ターンと最大可能範囲を計算してから段階的に減少させることはすでに考えていましたが、「完璧な」非ヒューリスティックな解決策があるかどうか知りたいですか?