我有一个半径可变的六边形网格。我的实体每回合可以移动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 == -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; }
任何想法我应该如何清理它?
最简单的边界路径最容易从x,y和z计算。