本文整理汇总了C#中TileMap.TileNeighbors方法的典型用法代码示例。如果您正苦于以下问题:C# TileMap.TileNeighbors方法的具体用法?C# TileMap.TileNeighbors怎么用?C# TileMap.TileNeighbors使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TileMap
的用法示例。
在下文中一共展示了TileMap.TileNeighbors方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: NavGraph
public NavGraph(TileMap tileMap, int startRow, int startCol, int ap)
{
_sourceRow = startRow;
_sourceCol = startCol;
_tileMap = tileMap;
int numNodes = tileMap.NumRows * tileMap.NumCols;
_distance = new int[numNodes];
for (int i = 0; i < numNodes; i++) {
_distance[i] = int.MaxValue;
}
int startIndex = TileToIndex(tileMap.TileAt(startRow, startCol));
_distance[startIndex] = 0;
_parent = new int[numNodes];
var queue = new List<int>();
queue.Add(startIndex);
while (queue.Count > 0) {
var u = queue.OrderBy(a => _distance[a]).First();
queue.Remove(u);
var tile = IndexToTile(u);
foreach (var v in tileMap.TileNeighbors(tile)) {
int alt = _distance[u] + v.MoveCost;
int idx = TileToIndex(v);
if (alt < _distance[idx]) {
_distance[idx] = alt;
_parent[idx] = u;
queue.Add(idx);
}
}
}
List<TerrainTile> tilesInRange = new List<TerrainTile>();
for (int i = 0; i < numNodes; i++) {
if (_distance[i] <= ap && i != startIndex) {
tilesInRange.Add(IndexToTile(i));
}
}
TilesInRange = tilesInRange.ToArray();
}