Here i got a method that can be used to detect clickclicks inside any polygon:
public bool PointInPolygon( Vector2 p, Vector2[] poly )
{
Vector2 p1, p2;
bool inside = false;
if( poly.Length < 3 )
{
return inside;
}
Vector2 oldPoint = new Vector2( poly[poly.Length - 1].X, poly[poly.Length - 1].Y );
for( int i = 0; i < poly.Length; i++ )
{
Vector2 newPoint = new Vector2( poly[i].X, poly[i].Y );
if( newPoint.X > oldPoint.X )
{
p1 = oldPoint;
p2 = newPoint;
}
else
{
p1 = newPoint;
p2 = oldPoint;
}
if( ( newPoint.X < p.X ) == ( p.X <= oldPoint.X )
&& ( (long)p.Y - (long)p1.Y ) * (long)( p2.X - p1.X )
< ( (long)p2.Y - (long)p1.Y ) * (long)( p.X - p1.X ) )
{
inside = !inside;
}
oldPoint = newPoint;
}
return inside;
}
You need to give the corners of your hexagon in a vector2 array (poly) and the clicked position (p) to the method.