ゲームのアルゴリズムを機能させるのに問題があり、ここの誰かが私を助けてくれることを願っています。ほとんどのソリューションは完全なタイルで機能するため、Googleはあまり役に立たなかったようです。
ゲームでは、ユニットはタイル内のさまざまな位置を占めることができます。つまり、左上隅、中央、右下、...タイルの位置(2/3)、つまり(2.2 / 3.1)、(2.5 / 3.5)に配置できます。 )、(2.8 / 3.9)。
それらが位置(2.2 / 3.1)から(5.7 / 4.1)に移動する場合、パスに障害物があるかどうかを確認する必要があります。
私の現在のアルゴリズムは次のとおりです。
- (2.2 / 3.1)から
- 動きの角度を計算します(つまり70度)
- その方向に0.1ステップ移動します
- 私がいるタイルを確認してください(floor(pX)/ floor(pY))
- 2から繰り返す
このアルゴリズムは機能しますが、障害物はタイルの一部ではなく完全なタイルにしかなり得ないため、私にはあまり効率的に見えません(ユニットは衝突しません)。ステップサイズを大きくすると、わずかに交差するだけのタイルを見逃し始めます(つまり、左下隅のみを交差します)。ステップサイズが0.1の場合でも、障害物を見逃す可能性があります。
サブマップ(角のあるすべてのタイル(floor(start.X)/ floor(start.Y))と(ceil(start.X)/ ceil(start.Y))を取得するための解決策を見つけようとしました。すべてのタイルを調べて、交差するかどうかを数学的にチェックします。悲しいことに、このチェックに必要な数学の知識が不足しているようです。
私の最後のアイデアは、タイルの4つの境界線すべてを線として取り、線線交叉を行うことでしたが、それは私の元のアプローチよりも遅いようです。
ヒントはありますか?
ありがとう。