0

ピンチ ジェスチャを使用して、スプライト/box2d ボディを n 個の形状に分割しました。メソッドを使用して、形状が作成される場所を特定しequidistantPointsOnACircleForMidpointます。ピンチ ジェスチャのタッチ位置 ( ) によって指定される (おおよその) 回転/移動に基づいて、これらのオブジェクトを移動したいと考えていますtouchPoints

たとえば、オブジェクトを 2 つのオブジェクトに分割する場合、最初の新しいオブジェクトは、中点に対して 0° と 180° だけでなく、1 本の指がタッチ ジェスチャを終了する場所の近くに配置する必要があります。作成される新しいオブジェクトの数は 2 から 10 の範囲であるため、それらをピンチ ジェスチャの座標に配置することはできません。

円の周りに等間隔に配置されたポイントに回転を適用したいので、最初のピンチ ジェスチャが開始ポイントになります。これは、最初のポイントを最初のタッチ位置として円の上に配置するのと同じくらい簡単かもしれません。多くの人にとって、これはおそらく基本的な数学です。それは私のためではありません - 私は途方に暮れているので、私は質問をしています.

ピンチジェスチャーのタッチ位置があり、ポイントが均等に配置されています-2つを組み合わせたいです。つまり、レイアウトの開始点は、ピンチジェスチャの最初のタッチ座標です (図に示すように)。

ポイントを並べるとこんな感じ。

-(NSArray*)equidistantPointsOnACircleForMidpoint:(CGPoint)midpoint numberOfPoints:(int)points withRadius:(double)radius pinchGestureTouchCoordinates:(NSArray*)touchPoints{

    //We need to prevent objects being placed outside the bounds of the screen.
    CGSize screenSize = [[CCDirector sharedDirector] winSize];

    NSMutableArray *pointsArray = [[[NSMutableArray alloc]init ] autorelease];

    if([touchPoints count]){
        NSLog(@"touchPoint at 0: %@", [touchPoints objectAtIndex:0]);

    }

    double step = ((M_PI * 2) / points);
    double x, y, current = 0;
    for (int i = 0; i < points; i++)
    {
        x = sin(current) * radius;
        y = cos(current) * radius;


        if (x+(midpoint.x*PTM_RATIO) > screenSize.width) {
            NSLog(@"WARNING: Width out of bounds");
        }
        if (y+(midpoint.y*PTM_RATIO) > screenSize.height) {
            NSLog(@"WARNING: Height out of bounds");
        }

        [pointsArray addObject:[NSNumber valueWithCGPoint:CGPointMake(x+(midpoint.x*PTM_RATIO), y+(midpoint.y*PTM_RATIO))]];

        current += step;
    }
    return pointsArray;
}

今何が起きているのですか:

ここに画像の説明を入力

私がしたいこと: ここに画像の説明を入力

4

1 に答える 1

0

UIPinchGestureRecognizer インターフェイスで宣言されているタッチの配列を取得できるように、独自のカテゴリを作成できます。

UITouch          *_touches[2];

次に、ジェスチャ認識エンジンを作成するときに、コールバックを設定し、認識エンジンをパラメーターとして受け取ります。カテゴリ メソッドを使用すると、タッチごとにすべての情報 (この場合は位置が必要) を取得し、それらを処理して必要な回転角度を決定できます。

于 2012-10-29T08:23:49.823 に答える