我正在尝试在一个由6个网格组成的立方体周围实现A*寻路算法,为了简单起见,我有4种方法:GetXPlus、GetXMinus、GetYPlus和GetYMinus。每种方法都会检查下一个瓷砖是否在当前网格空间内,如果不是,则切换到适当的网格。
我遇到的问题是,在尝试从与当前网格相反的网格中获取瓷砖时,返回的瓷砖位于相反的一侧。是否有一种方法或方法可以让我避免为每个原始网格和方向编写唯一的逻辑?
为了帮助表达我的问题,在这个例子中,我来自(紫色)网格并使用GetXPlus方法:
当前实现的片段如下(每个网格为64 x 64):
我遇到的问题是,在尝试从与当前网格相反的网格中获取瓷砖时,返回的瓷砖位于相反的一侧。是否有一种方法或方法可以让我避免为每个原始网格和方向编写唯一的逻辑?
为了帮助表达我的问题,在这个例子中,我来自(紫色)网格并使用GetXPlus方法:
当前实现的片段如下(每个网格为64 x 64):
public Tile GetXPlus( int currentX, int currentY )
{
var newX = currentX + 1;
var tile = GetTile( newX , currentY );
if( newX > 64 ) //Get adjacent XPlus Grid
{
currentGrid = SetCurrentGrid( XPlusGridIndex );
tile = GetTile( newX - 64, currentY );
}
return tile;
}
背景
这个实现源于对另一个问题的出色回答,建议在此处提供:https://gamedev.stackexchange.com/questions/53866/pathfinding-on-a-uneven-planetary-surface