Во-первых, спасибо всем, кто нашел время, чтобы ответить!
Я немного поиграл с ним, и, похоже, единственная проблема заключалась в том, что я использовал int
s для dy
и dx
вместо float
s. Я также нашел изящный, быстрый «метод» для преобразования градусов в радианы. Вот последний, рабочий код:
#define DEGREES_TO_RADIANS(angle) (angle / 180.0 * M_PI)
-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:self.view];
float dy = cannon.frame.origin.y - touchPoint.y;
float dx = cannon.frame.origin.x - touchPoint.x;
cannon.transform = CGAffineTransformMakeRotation(atan2(dy,dx) - DEGREES_TO_RADIANS(90));
}