1

我正在使用以下代码旋转精灵,但旋转速度非常快,并且与手指的旋转不同步。

在 init 方法中,我编写了以下代码

UIRotationGestureRecognizer* rot = [[UIRotationGestureRecognizer alloc] initWithTarget:self action: @selector (rotateSelector:)];
[[[CCDirector sharedDirector] openGLView] addGestureRecognizer:rot];

选择器的实现写在下面。

- (void)rotateSelector: (UIRotationGestureRecognizer*) gestureRecognizer
    {
        rotation = CC_RADIANS_TO_DEGREES([gestureRecognizer rotation]);
        mySprite.rotation += rotation;

    }

我认为问题出在以下行 mySprite.rotation += rotation;

但我想不通,如何将 CCSprite 的旋转与手指的旋转同步。

4

1 回答 1

0

与其将手势旋转添加到您不想要的精灵的旋转属性中,不如添加旋转差异将为您提供所需的结果。喜欢:

if (recognizer.state == UIGestureRecognizerStateBegan)
{
    self.lastRotAngle = CC_RADIANS_TO_DEGREES([recognizer rotation]);
}
else if (recognizer.state == UIGestureRecognizerStateChanged)
{
    float rotation = CC_RADIANS_TO_DEGREES([recognizer rotation]);

    sprite.rotation += rotation - self.lastRotAngle;
    self.lastRotAngle = rotation;
}

我希望这会有所帮助。

于 2013-11-01T19:23:18.100 回答