Hexagonal tiles 在六边形网格上沿边缘移动的最简单方法是什么?
我有一个半径可变的六边形网格。我的实体每回合可以移动2个六角 我应该如何计算下一步走向边界,然后沿着地图顺时针移动 首选边界移动 角色每次逆时针移动时应保持在边界处 中间移动示例 角色每转一圈应该向边缘移动1或2个六角 我想不出简单的数学来做这件事 编辑: 这就是我在边界上做运动的方式Hexagonal tiles 在六边形网格上沿边缘移动的最简单方法是什么?,hexagonal-tiles,Hexagonal Tiles,我有一个半径可变的六边形网格。我的实体每回合可以移动2个六角 我应该如何计算下一步走向边界,然后沿着地图顺时针移动 首选边界移动 角色每次逆时针移动时应保持在边界处 中间移动示例 角色每转一圈应该向边缘移动1或2个六角 我想不出简单的数学来做这件事 编辑: 这就是我在边界上做运动的方式 var x = pos.x; var y = pos.y; var z = -pos.x-pos.y; var dx = 0; var dy = 0; if (x =
var x = pos.x;
var y = pos.y;
var z = -pos.x-pos.y;
var dx = 0;
var dy = 0;
if (x == -radius && z > 1) { dy = 2; }
else if (x == -radius && z == 1) { dx = 1; dy = 1; }
else if (y == radius && x < -1) { dx = 2 }
else if (y == radius && x == -1) { dx = 2; dy = -1; }
else if (z == -radius && y > 1) { dx = 2; dy = -2; }
else if (z == -radius && y == 1) { dx = 1; dy = -2; }
else if (x == radius && z < -1) { dy = -2; }
else if (x == radius && z == -1) { dx = -1; dy = -1; }
else if (y == -radius && x > 1) { dx = -2; }
else if (y == -radius && x == 1) { dx = -2; dy = 1; }
else if (z == radius && y < -1) { dx = -2; dy = 2; }
else if (z == radius && y == -1) { dx = -1; dy = 2; }
var x=pos.x;
变量y=位置y;
var z=-pos.x-pos.y;
var-dx=0;
var-dy=0;
如果(x==-radius&&z>1){dy=2;}
如果(x==-radius&&z==1){dx=1;dy=1;}
如果(y==半径&&x<-1){dx=2}
如果(y==半径&&x==-1){dx=2;dy=-1;}
如果(z=-radius&&y>1){dx=2;dy=-2;}
如果(z=-radius&&y==1){dx=1;dy=-2;}
如果(x==半径&&z<-1){dy=-2;}
如果(x==半径&&z==-1){dx=-1;dy=-1;}
如果(y==-radius&&x>1){dx=-2;}
如果(y=-radius&&x==1){dx=-2;dy=1;}
如果(z==半径&&y<-1){dx=-2;dy=2;}
如果(z==半径&&y==-1){dx=-1;dy=2;}
我该怎么清理
到边界的最短路径可能最容易从x、y和z计算。为什么1,-2移动到0,-3而不是-1,-2?同样,为什么0,-1移动到-2,0而不是-2,-1(两步出)或-2,1?这只是一个例子。唯一的规则是角色尽可能向边界移动。如果它不能再向前移动,那么逆时针移动。每转一圈都必须移动2个六角。如果有人看到这个问题,请参见。