《高效判断点是否在正六边形蜂窝内的方法》
C#代码
4037f; // √3/2
private const float sideLength = 10; // 六边形边长
private const float hexWidth = sideLength * sqrt3_2; // 六边形宽度 √3/2 x L
private const float hexHeight = sideLength * 2; // 六边形高度 2L
// 平面直角坐标系中 检测某点与(x,y)为中心点的六边形 是否发生碰撞
public bool HitHex(Vector2 point,Vector2 cellPoint) {
float x = Mathf.Abs(point.x - cellPoint.x);
float y = Mathf.Abs(point.y - cellPoint.y);
float l = sideLength;
float w = hexWidth;
float r3 = sqrt3;
return y <= l && x < w && l - y > x / r3;
}