我有一块六角形瓷砖。由于视觉原因,每隔一行略有偏移。想象一下玩家触摸任何瓷砖 - 我需要将该瓷砖的坐标与他们接触的任何瓷砖进行比较,这样我才能确保他们彼此相邻。
如果网格没有偏移,我可以简单地确保我们在1 x和1 y坐标内,但在某些情况下这种情况会失败。
我可以非常接近 - 以下代码适用于所有情况,但仍然允许坐标3,2和4,3计为邻居,其中包括类似的数学关系。
int diffX = abs(newCoord.x - lastCoord.x);
int diffY = abs(newCoord.y - lastCoord.y);
// Never allow jumping rows
if( diffY > 1 || diffX > 1 ) return false;
// Allow same columns
if( diffX == 0 || diffY == 0 ) return true;
return false;
一位朋友想到将坐标组合成单个数字并确保邻居在一定数量范围内,但这也失败了几个组合。