好日子大家,我在寫我自己的尋路的腳本,首先必須在紙上,然後開始編碼,讓我告訴你,這是在實踐中更難比理論。所以,我遇到了一個問題,我當然無法解決。尋路 - 索引越界
的問題提出了自己在下面的圖片: 1)在這幅圖中,航點設置爲(6,6),並返回沒有錯誤。 2)請注意,在右上角的2點,一個沒有顯示出方向上的另一顯示出來。錯誤是指向上的節點。在這個鏡頭中,航點被移到(7,5),此時它開始從最後一個索引開始拋出錯誤。我越動航點接近右下角,在X = 13倒Y軸的多點拋出異常。
相關代碼:
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
錯誤是,只有當我添加了檢查,看是否再度朝方向點還說得過去或不拋出。另外要注意的是,我用direction.y
在方向實際上是存儲在x和z。出於某種原因,如果我使用z而不是y,它會完全停止工作。