我试图在一个立方体周围实现 A* 寻路,立方体由 6 个网格组成,为了简单起见,我有 4 个方法 GetXPlus、GetXMinus、GetYPlus、GetYMinus。每种方法都会检查下一个图块是否在当前网格空间内,如果不是则切换到适当的网格。
我遇到的问题是,当试图从当前网格以另一种方式翻转的网格中获取图块时,返回的图块位于另一侧。有没有一种方法或方法可以让我避免为每个原始网格和方向编写独特的逻辑?
为了帮助阐明我的问题,在此我来自(紫色)网格并使用 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