0

我有一个飞机精灵(考虑一个纸飞机,指向正确的方向),当点击屏幕时它会向上旋转一点,然后再向下旋转与向上旋转相同的度数。我通过使用以下代码实现了这一点:

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

//Plane move up on touch
UITouch *touch = [touches anyObject];
[plane stopAllActions];


[plane runAction:[CCSequence actions:[CCRotateBy actionWithDuration:0.15 angle:-20],
                 [CCMoveBy actionWithDuration:1 position:ccp(0,location.y)],
                 [CCRotateBy actionWithDuration:0.15 angle:20],
                  [CCCallBlock actionWithBlock:
                   ^{
                       [self startDownMovement];

                   }],nil]];}

接着

-(void)startDownMovement { [plane runAction:[CCSequence actions:[CCMoveBy actionWithDuration:2 position:ccp(0,-plane.position.y)],nil]]; }

问题是:例如,如果我点击 2 次,飞机会向上移动 20 度两次,但只会向下旋转 20 度一次。我只希望飞机向上旋转20度,无论屏幕被点击多少次,它都应该保持20度然后回到0度。

请帮忙。

感谢期待。

4

2 回答 2

0

通过在每次点击时检查平面的当前旋转来工作。如果它是 != 0 则不要进一步旋转,而是继续向上。然后在 处startDownMovement,将旋转设置为 0。它现在可以工作了。

于 2013-08-14T11:44:29.733 回答
0

读取平面的当前旋转属性。

//float currentRotation = plane.rotation;
//Calculate new Rotation Value :
// float newRotation = currentRotation - offset;  (offset in your case  = 20)
//Use CCRotateTo  in place of CCRotateBy
[plane runAction:[CCSequence actions:[CCRotateTo actionWithDuration:0.15 angle:-20],
                 [CCMoveBy actionWithDuration:1 position:ccp(0,location.y)],
                 [CCRotateTo actionWithDuration:0.15 angle:20],
                  [CCCallBlock actionWithBlock:
                   ^{
                       [self startDownMovement];

                   }],nil]];}
于 2013-07-29T05:24:49.770 回答