使用捏合手势,我将 sprite/box2d 主体拆分为 n 个形状。我确定使用方法创建形状的位置equidistantPointsOnACircleForMidpoint
。我想根据捏合手势的触摸位置 ( touchPoints
) 给出的(近似)旋转/移动来移动这些对象。
例如,如果将一个对象分成两个对象,我希望第一个新对象靠近一个手指结束触摸手势的位置,而不仅仅是相对于中点的 0° 和 180°。我不能只将它们放在捏合手势的坐标处,因为创建的新对象的数量从 2 到 10 不等。我已经展示了两个对象的问题,因为这是我能想到的最清晰的示例。
我想对围绕一个圆圈等距放置的点应用旋转,所以起点是第一个捏合手势的位置。这可能就像将第一个点放在圆圈上作为第一个触摸位置一样简单。对于你们中的许多人来说,这可能是基本的数学。这不适合我——我不知所措,这就是我问这个问题的原因。
我有捏手势触摸位置,并且我有同样布局的点 - 我想将两者结合起来;即布局的起点是pinchgesture中的第一个触摸坐标(如图)。
以下是我列出要点的方式:
-(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;
}
现在发生了什么事:
我想要发生的事情: