2012-03-13 14 views
0

私はあなたに "specks"と "connectors"があるゲームを持っています。CGAffineTransformMakeRotationがうまく機能しない

私は2つの "斑点"を接続する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"は問題ではありません。それはうまく動作します。また、私はセンターを知っていて、フレームは冗長です。後でそれを動作させます。第三に、私は2つの斑点が決してお互いの上に決して上がらないことを確かめました。最後に、私はまだUIIMAGEVIEWSにしたい!だから私はイメージを変えて、それをアニメートして、スペックからスペックに流れる電気のように見える。

回転をより正確にする方法を誰かに教えてもらえれば、大変感謝しています。ありがとう!

答えて

5

tanh(y/x)ではなく、atan2(y,x)を使用してください。つまり、双曲線の接線ではなく、逆正接が必要です。

+0

うわー!ありがとう!私はtanhがアークタンジェントになったと思ったが、それはあまり意味がないと思う。 –

関連する問題