CGAffineTransformMakeRotation не работает
У меня есть игра, где у вас есть "пятнышки" и "разъемы".
Я создаю UIImageView, который соединяет две "пятнышки"… но, как вы можете видеть (если картинка работает), когда пятнышки почти друг на друга, как слева, не работает. Это мой код... и мне было интересно, как вы могли бы сделать вращение более точным в такой ситуации.
UIImageView *connector = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"RedConnector.png"]];
connector.contentMode = UIViewContentModeScaleToFill;
connector.hidden = NO;
connector.alpha = 1;
connector.frame = CGRectMake(0, 0, [self DistanceBetweenPoints:speck1.center :speck2.center], 7);
connector.center = CGPointMake((speck1.center.x + speck2.center.x)/2, (speck1.center.y + speck2.center.y)/2);
//This is where the prob is:
connector.transform = CGAffineTransformMakeRotation(tanh((speck2.center.y - speck1.center.y)/(speck2.center.x - speck1.center.x)) );
[Connectors addObject:connector];
[self.view addSubview:connector];
"DistanceBetweenPoints" не является проблемой. Это отлично работает. Кроме того, я знаю, что центр И рамка вроде бы избыточны - я разберусь с этим позже. В-третьих, я позаботился о том, чтобы две пятнышки никогда не находились непосредственно друг над другом (чтобы никогда не делить на ноль). И наконец, я все еще хочу, чтобы они были UIIMAGEVIEWS!! Так что я могу изменить изображение и анимировать их так, чтобы это выглядело как электричество, протекающее от пятнышка к пятнышку.
Если бы кто-нибудь мог показать мне, как сделать вращение более точным, это было бы очень ценно. Спасибо!
1 ответ
Вы должны использовать atan2(y,x)
не tanh(y/x)
, То есть вы хотите арктангенс, а не гиперболический тангенс.