画面全体に 9 つの六角形のスプライトがあり、それらの領域をタッチ可能にするために、それらの周りに特定のパスを指定する必要があります。すべての単一パスの座標をそれぞれ設定したくないので、最初のパス (六角形はすべて同じサイズ) を使用して、その原点を別の位置に移動することはできませんか? (今それを行うと、CGPathAddLineToPoint(); は前の六角形から六角形のポイントを追加します。アイデアが理解できたと思います... (写真を参照... 注: 右上の灰色の八角形は黒いものとまったく同じサイズと形状)![移動パスの座標と形状][1]
hex2TouchArea=CGPathCreateMutable();
CGPathMoveToPoint(hex2TouchArea, NULL, 150,157);
CGPathAddLineToPoint(hex2TouchArea, NULL, 130, 198);
CGPathAddLineToPoint(hex2TouchArea, NULL, 146, 236);
CGPathAddLineToPoint(hex2TouchArea, NULL, 195, 236);
CGPathAddLineToPoint(hex2TouchArea, NULL, 218, 197);
CGPathAddLineToPoint(hex2TouchArea, NULL, 193, 157);
CGPathCloseSubpath(hex2TouchArea);
ここに画像でそれを示す写真を載せます
http://666kb.com/i/bz2ysevuw8n65rh3i.gif
*編集:投稿から解決策を得て、少し変更しました:*
-(CGMutablePathRef) drawHexagon:(CGPoint)origin
{
//create mutable path
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, nil, origin.x, origin.y);
CGPoint newloc = CGPointMake(origin.x - 20, origin.y + 42);
CGPathMoveToPoint(path, NULL, newloc.x, newloc.y);
CGPathAddLineToPoint(path, NULL, newloc.x + 16,newloc.y + 38);
CGPathAddLineToPoint(path, NULL, newloc.x + 49, newloc.y + 0);
CGPathAddLineToPoint(path, NULL, newloc.x + 23, newloc.y - 39);
CGPathAddLineToPoint(path, NULL, newloc.x - 25,newloc.y - 40);
CGPathAddLineToPoint(path, NULL, newloc.x -43, newloc.y + 0);
CGPathCloseSubpath(path);
return path;
}