良い一日の皆さん、私は自分のパスファインディングスクリプトを書いています。最初にそれを紙に書いてコーディングを始めました。私に教えてください。実際には理論よりもはるかに難しいです。だから私は問題に遭遇しましたが、私はもちろん解決できません。パスファインディング - 境界外のインデックス
この問題は、次の画像に現れます。 1)このショットでは、ウェイポイントは(6,6)に設定され、エラーは返されません。 2)右上の2つの点に注意してください。一方はもう一方の方向を示していません。エラーは、上を指すノードです。このショットでは、ウェイポイントは(7,5)に移動し、最後のインデックスから開始してエラーをスローします。ウェイポイントを右下隅に近づけば増えるほど、X軸の下のX = 13の点が例外をスローします。
関連するコード:私は方向に向けたポイントが通行可能かそうでないかどうかを確認するためのチェックを追加するとき
for (int x = 0; x < map.sizeX; x++)
{
for (int y = 0; y < map.sizeY; y++)
{
if (!(x == pVal.x && y == pVal.y) && map.grid[x, y].passable)
{
float dot = 1;
var heading = (grid[x, y].position - t.position).normalized;
heading.y = 0;
foreach (Vector3 direction in map.GetDirections())
{
var dot2 = Vector3.Dot(heading, direction.normalized);
if (dot > dot2)
{
if (map.grid[x + (int)direction.x, y + (int)direction.y].passable)
{ // Error thrown when it reaches this if-statement \\
grid[x, y].direction = direction;
dot = dot2;
}
}
}
}
}
}
このIndex out of Bounds
エラーのみがスローされます。注意すべきもう一つは、方向が実際にxとzに格納されているdirection.y
を使用することです。 yの代わりにzを使用すると何らかの理由で完全に動作しなくなります。